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); }
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(); }
/// <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)); }
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); }
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); }
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); }