public static void InitializeAssembly(TestContext context)
        {
            // This fixes some odd unit test errors loading Microsoft.VisualStudio.Utilities
            // see: https://ci.appveyor.com/project/GoogleCloudPlatform/google-cloud-visualstudio/build/2.0.0-dev.135/tests
            new Mock <ISettingsManager>().Setup(m => m.GetSubset(It.IsAny <string>()))
            .Returns(Mock.Of <ISettingsSubset>());

            EventsReporterWrapper.DisableReporting();
            GoogleCloudExtensionPackage.Instance = null;
            // Enable pack URIs.
            Assert.AreEqual(new Application {
                ShutdownMode = ShutdownMode.OnExplicitShutdown
            }, Application.Current);

            JoinableApplicationContext = Application.Current.Dispatcher.Invoke(() => new JoinableTaskContext());
            ApplicationTaskScheduler   = Application.Current.Dispatcher.Invoke(TaskScheduler.FromCurrentSynchronizationContext);

            // Initalize VsTaskLibraryHelper.ServiceInstance to a service that delegates to the current service.
            IVsTaskSchedulerService delegatinTaskSchedulerService = new DelegatingTaskSchedulerService();

            s_simpleIServiceProvider = new SimpleIServiceProvider
            {
                { typeof(SVsTaskSchedulerService), delegatinTaskSchedulerService },
                { typeof(SVsActivityLog), Mock.Of <IVsActivityLog>() }
            };
            ServiceProvider.CreateFromSetSite(s_simpleIServiceProvider);
            Assert.AreEqual(delegatinTaskSchedulerService, VsTaskLibraryHelper.ServiceInstance);
            ServiceProvider.GlobalProvider.Dispose();
        }
        public void TestInitialize()
        {
            var taskSchedulerMock = new Mock <IVsTaskSchedulerService>();
            Mock <IVsTaskSchedulerService2> taskScheduler2Mock = taskSchedulerMock.As <IVsTaskSchedulerService2>();

            taskSchedulerMock.Setup(ts => ts.CreateTaskCompletionSource())
            .Returns(() => new FakeIVsTaskCompletionSource());
            taskScheduler2Mock.Setup(ts => ts.GetAsyncTaskContext())
            .Returns(AssemblyInitialize.JoinableApplicationContext);
            taskScheduler2Mock.Setup(ts => ts.GetTaskScheduler(It.IsAny <uint>()))
            .Returns((uint context) => FakeIVsTask.GetSchedulerFromContext((__VSTASKRUNCONTEXT)context));

            DteMock             = new Mock <DTE>().As <DTE2>();
            ServiceProviderMock = DteMock.As <IServiceProvider>();
            ServiceProviderMock.SetupService <SDTE, DTE2>(DteMock);
            ServiceProviderMock.SetupService <DTE, DTE2>(DteMock);
            ComponentModelMock =
                ServiceProviderMock.SetupService <SComponentModel, IComponentModel>(DefaultValueProvider.Mock);
            ServiceProviderMock.SetupService <SVsTaskSchedulerService, IVsTaskSchedulerService2>(taskScheduler2Mock);
            ServiceProviderMock.SetupDefaultServices();

            ServiceProvider oldProvider = ServiceProvider.GlobalProvider;

            ServiceProvider.CreateFromSetSite(ServiceProviderMock.Object);
            Assert.AreNotEqual(oldProvider, ServiceProvider.GlobalProvider);
        }
Beispiel #3
0
        public void InitializeGlobalsForTest()
        {
            PackageMock = new Mock <IGoogleCloudExtensionPackage> {
                DefaultValue = DefaultValue.Mock
            };
            PackageMock.Setup(p => p.JoinableTaskFactory).Returns(AssemblyInitialize.JoinableApplicationContext.Factory);

            _serviceProviderMock = new Mock <IServiceProvider>();
            _serviceProviderMock.SetupService <SVsActivityLog, IVsActivityLog>();
            _serviceProviderMock.SetupService <SVsTaskSchedulerService>(new FakeIVsTaskSchedulerService());
            _serviceProviderMock.SetupDefaultServices();

            ServiceProvider oldProvider = ServiceProvider.GlobalProvider;

            ServiceProvider.CreateFromSetSite(_serviceProviderMock.Object);
            Assert.AreNotEqual(oldProvider, ServiceProvider.GlobalProvider);

            GoogleCloudExtensionPackage.Instance = PackageMock.Object;

            CredentialStoreMock = Mock.Get(CredentialsStore.Default);
            CredentialStoreMock.SetupGet(cs => cs.CurrentProjectId).Returns("DefaultProjectId");
            CredentialStoreMock.SetupGet(cs => cs.CurrentAccount)
            .Returns(new UserAccount {
                AccountName = "DefaultAccountName"
            });

            EventsReporterWrapper.DisableReporting();
        }
Beispiel #4
0
 /// <summary>
 /// Makes the current thread the UI thread. This is done by setting
 /// <see cref="ServiceProvider.GlobalProvider"/>.
 /// </summary>
 /// <param name="provider">
 /// A service provider that may be used to fulfil queries made through
 /// the global provider.
 /// </param>
 /// <remarks>
 /// This function is intended solely for testing purposes and should
 /// only be called from outside Visual Studio.
 /// </remarks>
 /// <exception cref="InvalidOperationException">
 /// A UI thread already exists. This may indicate that the function
 /// has been called within Visual Studio.
 /// </exception>
 internal static void MakeCurrentThreadUIThread(ServiceProvider provider = null)
 {
     if (ServiceProvider.GlobalProvider != null)
     {
         throw new InvalidOperationException("UI thread already exists");
     }
     ServiceProvider.CreateFromSetSite(new DummyOleServiceProvider(provider));
 }
Beispiel #5
0
        private static void InitPackageMock(Action <Mock <DTE> > dteSetupAction)
        {
            var serviceProviderMock = new Mock <IServiceProvider>();
            var dteMock             = new Mock <DTE>();
            var activityLogMock     = new Mock <IVsActivityLog>();

            activityLogMock.Setup(al => al.LogEntry(It.IsAny <uint>(), It.IsAny <string>(), It.IsAny <string>()))
            .Returns(VSConstants.S_OK);
            dteSetupAction(dteMock);
            SetupService <DTE, DTE>(serviceProviderMock, dteMock);
            SetupService <SVsActivityLog, IVsActivityLog>(serviceProviderMock, activityLogMock);
            // This sets the ServiceProvider.GlobalProvider
            // and causes it to use the mocked IServiceProvider.
            ServiceProvider.CreateFromSetSite(serviceProviderMock.Object);
            // This runs the Initialize() method.
            ((IVsPackage) new GoogleCloudExtensionPackage()).SetSite(serviceProviderMock.Object);
        }
Beispiel #6
0
        private static void InitPackageMock(IVsPackage package, Mock <DTE> dteMock)
        {
            Mock <IServiceProvider> serviceProviderMock = dteMock.As <IServiceProvider>();

            s_activityLogMock = new Mock <IVsActivityLog>();
            s_activityLogMock.Setup(al => al.LogEntry(It.IsAny <uint>(), It.IsAny <string>(), It.IsAny <string>()))
            .Returns(VSConstants.S_OK);
            SetupService <DTE, DTE>(serviceProviderMock, dteMock);
            SetupService <SVsActivityLog, IVsActivityLog>(serviceProviderMock, s_activityLogMock);

            // Remove the old GlobalProvider if it exists.
            ServiceProvider.GlobalProvider?.Dispose();
            // This sets the ServiceProvider.GlobalProvider
            // and causes it to use the mocked IServiceProvider.
            ServiceProvider.CreateFromSetSite(serviceProviderMock.Object);
            // This runs the Initialize() method.
            package.SetSite(serviceProviderMock.Object);
        }
Beispiel #7
0
        public bool BeforeFinished(IMessageBus messageBus, TestCaseFinished message)
        {
            if (UIThreadHelper.Instance.Invoke(() => ThreadHelper.CheckAccess()))
            {
                return(true);
            }

            // Try to restore service provider and original thread.
            // Terminate test execution if not succeeded
            try
            {
                UIThreadHelper.Instance.Invoke(() => ServiceProvider.CreateFromSetSite(_oleServiceProvider));
            }
            catch (Exception ex)
            {
                messageBus.QueueMessage(new TestCaseCleanupFailure(message.TestCase, ex));
                return(false);
            }

            InvalidOperationException exception = new InvalidOperationException("Test changes or accesses ServiceProvider.GlobalProvider from non-UI thread. Try annotate it with ThreadType.UI");

            return(messageBus.QueueMessage(new TestCaseCleanupFailure(message.TestCase, exception)));
        }
 static VsServiceProviderHelper()
 {
     GlobalServiceProvider = new ConfigurableServiceProvider();
     GlobalServiceProvider.RegisterService(typeof(SVsActivityLog), new ConfigurableVsActivityLog(), true);
     ServiceProvider.CreateFromSetSite(GlobalServiceProvider);
 }