Esempio n. 1
0
        public async Task UiInitializationTest()
        {
            var ui = await ReAttachUi.InitAsync(_mocks.MockReAttachPackage.Object);

            _mocks.MockMenuService.Verify(m => m.AddCommand(It.IsAny <MenuCommand>()),
                                          Times.Exactly(ReAttachConstants.ReAttachHistorySize));
            Assert.AreEqual(0, _mocks.MockReAttachReporter.ErrorCount, "Unexpected number of ReAttach errors.");
            Assert.AreEqual(0, _mocks.MockReAttachReporter.WarningCount, "Unexpected number of ReAttach warnings.");
        }
Esempio n. 2
0
        public async Task ReAttachCommandClickedEmptyHistory()
        {
            var ui = await ReAttachUi.InitAsync(_mocks.MockReAttachPackage.Object);

            await ui.ReAttachCommandClickedAsync(new VsShell.OleMenuCommand((sender, args) => {},
                                                                            new CommandID(ReAttachConstants.ReAttachPackageCmdSet, ReAttachConstants.ReAttachCommandId)), null);

            _mocks.MockReAttachDebugger.Verify(d => d.ReAttach(It.IsAny <ReAttachTarget>()), Times.Never());
            Assert.AreEqual(0, _mocks.MockReAttachReporter.ErrorCount, "Unexpected number of ReAttach errors.");
            Assert.AreEqual(0, _mocks.MockReAttachReporter.WarningCount, "Unexpected number of ReAttach warnings.");
        }
Esempio n. 3
0
        public async Task InitializeAsync(ReAttachPackage package, ReAttachHistory history, CancellationToken cancellationToken)
        {
            _history = history;
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);


            _ui = (await package.GetServiceAsync(typeof(ReAttachUi))) as ReAttachUi;
            if (_ui == null)
            {
                ReAttachUtils.ShowStartupError("Unable to obtain reference to UI.");
                return;
            }

            var debugger = (await package.GetServiceAsync(typeof(IVsDebugger))) as IVsDebugger;

            if (debugger == null)
            {
                ReAttachUtils.ShowStartupError("Unable to obtain reference to debugger.");
                return;
            }

            if (debugger.AdviseDebugEventCallback(this) != VSConstants.S_OK)
            {
                ReAttachUtils.ShowStartupError("Unable to subscribe on debug events.");
                return;
            }

            if (debugger.AdviseDebuggerEvents(this, out _cookie) != VSConstants.S_OK)
            {
                ReAttachUtils.ShowStartupError("Unable to subscribe on debugger mode changes.");
                return;
            }


            var dte = await package.GetServiceAsync(typeof(EnvDTE.DTE)) as DTE2;

            if (dte == null)
            {
                ReAttachUtils.ShowStartupError("Unable to get obtain reference to automation object model (DTE2).");
                return;
            }

            _dteDebugger = dte.Debugger as Debugger2;
            if (_dteDebugger == null)
            {
                ReAttachUtils.ShowStartupError("Unable to get reference to debugger from automation object.");
                return;
            }

            _engines = GetTransportEngines();
        }
Esempio n. 4
0
        public async Task NoDialogShownWhenTargetIsAlreadyRunning()
        {
            var ui = await ReAttachUi.InitAsync(_mocks.MockReAttachPackage.Object);

            _mocks.MockReAttachDebugger.Setup(d => d.ReAttach(It.IsAny <ReAttachTarget>())).Returns(true);
            _mocks.MockReAttachHistoryItems.AddFirst(new ReAttachTarget(123, "path", "user"));

            var id      = new CommandID(ReAttachConstants.ReAttachPackageCmdSet, ReAttachConstants.ReAttachCommandId);
            var command = new VsShell.OleMenuCommand((sender, args) => { }, id);
            await ui.ReAttachCommandClickedAsync(command, null);

            _mocks.MockReAttachDebugger.Verify(d => d.ReAttach(It.IsAny <ReAttachTarget>()), Times.Once());
            Assert.AreEqual(0, _mocks.MockReAttachReporter.ErrorCount, "Unexpected number of ReAttach errors.");
            Assert.AreEqual(0, _mocks.MockReAttachReporter.WarningCount, "Unexpected number of ReAttach warnings.");
        }
Esempio n. 5
0
        public async Task CommandsShouldBeVisibleIfTheirInHistoryAndNotAttached()
        {
            var ui = await ReAttachUi.InitAsync(_mocks.MockReAttachPackage.Object);

            _mocks.MockReAttachDebugger.Setup(d => d.ReAttach(It.IsAny <ReAttachTarget>())).Returns(true);
            for (var i = 1; i <= 3; i++)
            {
                _mocks.MockReAttachHistoryItems.AddFirst(new ReAttachTarget(123, "name" + i, "user" + i));
            }

            ui.Update();
            Assert.AreEqual(3, ui.Commands.Count(c => c.Visible), "Incorrect number of commands visible.");

            _mocks.MockReAttachHistoryItems[2].IsAttached = true;
            ui.Update();
            Assert.AreEqual(2, ui.Commands.Count(c => c.Visible), "Incorrect number of commands visible.");
        }
Esempio n. 6
0
        public async Task WillDoReAttachIfHistoryItemsArePresent()
        {
            var ui = await ReAttachUi.InitAsync(_mocks.MockReAttachPackage.Object);

            _mocks.MockReAttachDebugger.Setup(d => d.ReAttach(It.IsAny <ReAttachTarget>())).Returns(true);

            for (var i = 1; i < 5; i++)
            {
                _mocks.MockReAttachHistoryItems.AddLast(new ReAttachTarget(i, "path" + i, "user" + i));
            }
            Assert.AreEqual(1, _mocks.MockReAttachHistoryItems[0].ProcessId, "Wrong target on top of ReAttach list.");

            var id      = new CommandID(ReAttachConstants.ReAttachPackageCmdSet, ReAttachConstants.ReAttachCommandId + 3);
            var command = new VsShell.OleMenuCommand((sender, args) => { }, id);
            await ui.ReAttachCommandClickedAsync(command, null);

            _mocks.MockReAttachDebugger.Verify(d => d.ReAttach(_mocks.MockReAttachHistoryItems[3]), Times.Once());

            Assert.AreEqual(0, _mocks.MockReAttachReporter.ErrorCount, "Unexpected number of ReAttach errors.");
            Assert.AreEqual(0, _mocks.MockReAttachReporter.WarningCount, "Unexpected number of ReAttach warnings.");
        }