Exemplo n.º 1
0
        internal void Restart(DTE dte, bool elevated)
        {
            var currentProcess = Process.GetCurrentProcess();

            var parser = new ArgumentParser(dte.CommandLineArguments);

            if (currentProcess.MainModule == null)
            {
                return;
            }

            var builder = new RestartProcessBuilder()
                          .WithDevenv(currentProcess.MainModule.FileName).WithArguments(parser.GetArguments());

            var openedItem = GetOpenedItem(dte);

            if (openedItem != OpenedItem.None)
            {
                if (openedItem.IsSolution)
                {
                    builder.WithSolution(openedItem.Name);
                }
                else
                {
                    builder.WithProject(openedItem.Name);
                }
            }

            if (elevated)
            {
                builder.WithElevatedPermission();
            }

            const string commandName  = "File.Exit";
            var          closeCommand = dte.Commands.Item(commandName);

            CommandEvents closeCommandEvents = null;

            if (closeCommand != null)
            {
                closeCommandEvents = dte.Events.CommandEvents[closeCommand.Guid, closeCommand.ID];
            }

            // Install the handler
            // ReSharper disable once UnusedVariable
            var handler = new VisualStudioEventHandler(dte.Events.DTEEvents, closeCommandEvents, builder.Build());

            if (closeCommand != null && closeCommand.IsAvailable)
            {
                // if the Exit command is present, execute it with all graceful dialogs by VS
                dte.ExecuteCommand(commandName);
            }
            else
            {
                // Close brutally
                dte.Quit();
            }
        }
Exemplo n.º 2
0
        public void Initialize()
        {
            var visualStudioServiceProvider = Substitute.For <IServiceProvider>();

            _runningDocumentsTable = new IVsRunningDocumentTableDouble();
            visualStudioServiceProvider.GetService(typeof(SVsRunningDocumentTable)).Returns(_runningDocumentsTable);
            _eventQueue   = new EventQueue();
            _eventHandler = new VisualStudioEventHandler(_eventQueue, visualStudioServiceProvider);
        }
Exemplo n.º 3
0
        public void ThenADiscoverTestsEventIsQueued()
        {
            var eventQueue   = new EventQueue();
            var eventHandler = new VisualStudioEventHandler(eventQueue, Substitute.For <IServiceProvider>());

            eventHandler.OnAfterLoadProject(null, null);

            eventQueue
            .OfType <ProjectLoadedEvent>()
            .Should()
            .HaveCount(1);
        }
Exemplo n.º 4
0
        public void ThenASolutionOpenedEventIsQueued()
        {
            var processingQueue = new List <ProcessingItem>();
            var eventQueue      = new EventQueue();
            var handler         = new VisualStudioEventHandler(eventQueue, Substitute.For <IServiceProvider>());

            handler.OnAfterOpenSolution(null, 0);

            eventQueue
            .OfType <SolutionOpenedEvent>()
            .Should()
            .HaveCount(1);
        }
        internal void Restart(DTE dte, bool elevated)
        {
            var currentProcess = Process.GetCurrentProcess();

            var parser = new ArgumentParser(dte.CommandLineArguments);

            var builder = new RestartProcessBuilder()
                .WithDevenv(currentProcess.MainModule.FileName)
                .WithArguments(parser.GetArguments());

            var openedItem = GetOpenedItem(dte);
            if (openedItem != OpenedItem.None)
            {
                if (openedItem.IsSolution)
                {
                    builder.WithSolution(openedItem.Name);
                }
                else
                {
                    builder.WithProject(openedItem.Name);
                }
            }

            if (elevated)
            {
                builder.WithElevatedPermission();
            }

            const string commandName = "File.Exit";
            var closeCommand = dte.Commands.Item(commandName);

            CommandEvents closeCommandEvents = null;
            if (closeCommand != null)
            {
                closeCommandEvents = dte.Events.CommandEvents[closeCommand.Guid, closeCommand.ID];
            }

            // Install the handler
            var handler = new VisualStudioEventHandler(dte.Events.DTEEvents, closeCommandEvents, builder.Build());

            if (closeCommand != null && closeCommand.IsAvailable)
            {
                // if the Exit commad is present, execute it with all gracefulls dialogs by VS
                dte.ExecuteCommand(commandName);
            }
            else
            {
                // Close brutally
                dte.Quit();
            }
        }
        public void ThenAProjectLoadedEventIsQueuedForLoadedProjects()
        {
            var eventQueue      = new EventQueue();
            var solutionDouble  = new VsSolutionDouble();
            var serviceProvider = Substitute.For <IServiceProvider>();

            serviceProvider.GetService(typeof(SVsSolution)).Returns(solutionDouble);
            var eventHandler = new VisualStudioEventHandler(eventQueue, serviceProvider);

            // Pretend we have one project loaded
            solutionDouble.WithProjects(new [] { new VsProjectDouble() });

            eventHandler.OnAfterLoadProjectBatch(true);

            eventQueue
            .OfType <ProjectLoadedEvent>()
            .Should()
            .HaveCount(1);
        }
 public void Initialize()
 {
     _processingQueue = new List <ProcessingItem>();
     _eventHandler    = new VisualStudioEventHandler(new EventQueue(), Substitute.For <IServiceProvider>());
 }