private static ConfiguredProject CreateConfiguredProject(string[] capabilities, Dictionary <string, string?> propertyNamesAndValues) { return(ConfiguredProjectFactory.Create( IProjectCapabilitiesScopeFactory.Create(capabilities), services: ConfiguredProjectServicesFactory.Create( projectPropertiesProvider: IProjectPropertiesProviderFactory.Create( commonProps: IProjectPropertiesFactory.CreateWithPropertiesAndValues( propertyNamesAndValues))))); }
public BuildUpToDateCheckTests(ITestOutputHelper output) { _output = output; // NOTE most of these mocks are only present to prevent NREs in Initialize // Enable "Info" log level, as we assert logged messages in tests var projectSystemOptions = new Mock <IProjectSystemOptions>(); projectSystemOptions.Setup(o => o.GetFastUpToDateLoggingLevelAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(LogLevel.Info); projectSystemOptions.Setup(o => o.GetIsFastUpToDateCheckEnabledAsync(It.IsAny <CancellationToken>())) .ReturnsAsync(() => _isFastUpToDateCheckEnabled); var projectCommonServices = IProjectCommonServicesFactory.CreateWithDefaultThreadingPolicy(); var jointRuleSource = new ProjectValueDataSource <IProjectSubscriptionUpdate>(projectCommonServices); var sourceItemsRuleSource = new ProjectValueDataSource <IProjectSubscriptionUpdate>(projectCommonServices); var projectSubscriptionService = new Mock <IProjectSubscriptionService>(); projectSubscriptionService.SetupGet(o => o.JointRuleSource).Returns(jointRuleSource); projectSubscriptionService.SetupGet(o => o.SourceItemsRuleSource).Returns(sourceItemsRuleSource); var configuredProjectServices = ConfiguredProjectServicesFactory.Create(projectSubscriptionService: projectSubscriptionService.Object); var configuredProject = new Mock <ConfiguredProject>(); configuredProject.SetupGet(c => c.ProjectVersion).Returns(() => _projectVersion); configuredProject.SetupGet(c => c.Services).Returns(configuredProjectServices); configuredProject.SetupGet(c => c.UnconfiguredProject).Returns(UnconfiguredProjectFactory.Create(filePath: _projectFullPath)); var projectAsynchronousTasksService = new Mock <IProjectAsynchronousTasksService>(); projectAsynchronousTasksService.SetupGet(s => s.UnloadCancellationToken).Returns(CancellationToken.None); projectAsynchronousTasksService.Setup(s => s.IsTaskQueueEmpty(ProjectCriticalOperation.Build)).Returns(() => _isTaskQueueEmpty); var lastWriteTimeUtc = new DateTime(1999, 1, 1, 0, 0, 0, DateTimeKind.Utc); _fileSystem = new IFileSystemMock(); _fileSystem.AddFile(_msBuildProjectFullPath, lastWriteTimeUtc); _fileSystem.AddFile("Project1", lastWriteTimeUtc); _fileSystem.AddFile("Project2", lastWriteTimeUtc); _fileSystem.AddFolder(_msBuildProjectDirectory); _fileSystem.AddFolder(_outputPath); var threadingService = IProjectThreadingServiceFactory.Create(); _buildUpToDateCheck = new BuildUpToDateCheck( projectSystemOptions.Object, configuredProject.Object, projectAsynchronousTasksService.Object, IProjectItemSchemaServiceFactory.Create(), ITelemetryServiceFactory.Create(telemetryParameters => _telemetryEvents.Add(telemetryParameters)), threadingService, _fileSystem); }
private static IVsHierarchy CreateIVSHierarchy(string targetFrameworkMoniker = ".NETCoreApp,Version=v3.0") { var projectProperties = IProjectPropertiesFactory.CreateWithPropertyAndValue("TargetFrameworkMoniker", targetFrameworkMoniker); var propertiesProvider = IProjectPropertiesProviderFactory.Create(commonProps: projectProperties); var project = ConfiguredProjectFactory.Create(services: ConfiguredProjectServicesFactory.Create(projectPropertiesProvider: propertiesProvider)); var scope = IProjectCapabilitiesScopeFactory.Create(new[] { ProjectCapability.DotNet, ProjectCapability.PackageReferences }); var ivsHierarchy = IVsHierarchyFactory.ImplementAsUnconfiguredProject(UnconfiguredProjectFactory.Create(scope: scope, configuredProject: project)); return(ivsHierarchy); }
public async Task GetProperty_ReturnsEmptyString_WhenThereIsNoPropertyPagesCatalog() { var provider = new LaunchTargetPropertyPageValueProvider( project: UnconfiguredProjectFactory.Create( configuredProject: ConfiguredProjectFactory.Create( services: ConfiguredProjectServicesFactory.Create( propertyPagesCatalogProvider: null))), launchSettingsProvider: SetupLaunchSettingsProvider(activeProfileName: "Alpha", activeProfileLaunchTarget: "AlphaCommand"), projectThreadingService: IProjectThreadingServiceFactory.Create()); var actualValue = await provider.OnGetEvaluatedPropertyValueAsync(string.Empty, string.Empty, Mock.Of <IProjectProperties>()); Assert.Equal(expected: string.Empty, actual: actualValue); }
public async Task GetProperty_DoesNotFail_WhenAPageHasNoTemplate() { var catalogProvider = GetCatalogAndProviderDataWithMissingTemplateName(); var provider = new LaunchTargetPropertyPageValueProvider( project: UnconfiguredProjectFactory.Create( configuredProject: ConfiguredProjectFactory.Create( services: ConfiguredProjectServicesFactory.Create( propertyPagesCatalogProvider: catalogProvider))), launchSettingsProvider: SetupLaunchSettingsProvider(activeProfileName: "Alpha", activeProfileLaunchTarget: "BetaCommand"), projectThreadingService: IProjectThreadingServiceFactory.Create()); var actualValue = await provider.OnGetEvaluatedPropertyValueAsync(string.Empty, string.Empty, Mock.Of <IProjectProperties>()); Assert.Equal(expected: string.Empty, actual: actualValue); }
public async Task GetListValuesAsync_ReturnsPageNamesAndDisplayNames() { var catalogProvider = GetCatalogProviderAndData(); var provider = new LaunchTargetPropertyPageEnumProvider( ConfiguredProjectFactory.Create( services: ConfiguredProjectServicesFactory.Create( propertyPagesCatalogProvider: catalogProvider))); var generator = await provider.GetProviderAsync(options : null); var values = await generator.GetListedValuesAsync(); Assert.Collection(values, new Action <IEnumValue>[] { ev => { Assert.Equal(expected: "BetaCommandPageId", actual: ev.Name); Assert.Equal(expected: "Beta", actual: ev.DisplayName); }, ev => { Assert.Equal(expected: "GammaCommandPageId", actual: ev.Name); Assert.Equal(expected: "Gamma", actual: ev.DisplayName); } }); }
private static DotNetCoreProjectCompatibilityDetector CreateCompatibilityDetector(out IDialogServices dialogServices, string?versionDataString = null, Version?vsVersion = null, bool isSolutionOpen = false, bool hasNewProjects = false, bool usingPreviewSDK = false, bool isCapabilityMatch = true, string targetFrameworkMoniker = ".NETCoreApp,Version=v3.0") { dialogServices = IDialogServicesFactory.Create(); var additionalReference = dialogServices; var projectProperties = IProjectPropertiesFactory.CreateWithPropertyAndValue("TargetFrameworkMoniker", targetFrameworkMoniker); var propertiesProvider = IProjectPropertiesProviderFactory.Create(commonProps: projectProperties); var project = ConfiguredProjectFactory.Create(services: ConfiguredProjectServicesFactory.Create(projectPropertiesProvider: propertiesProvider)); var scope = hasNewProjects ? IProjectCapabilitiesScopeFactory.Create(new[] { ProjectCapability.DotNet, ProjectCapability.PackageReferences }) : null; var projectAccessor = new Lazy <IProjectServiceAccessor>(() => IProjectServiceAccessorFactory.Create(scope, project)); var lazyDialogServices = new Lazy <IDialogServices>(() => additionalReference); var threadHandling = new Lazy <IProjectThreadingService>(() => IProjectThreadingServiceFactory.Create(verifyOnUIThread: false)); var vsShellUtilitiesHelper = new Lazy <IVsShellUtilitiesHelper>(() => IVsShellUtilitiesHelperFactory.Create(string.Empty, vsVersion ?? new Version("16.1"))); var fileSystem = new Lazy <IFileSystem>(() => IFileSystemFactory.Create(existsFunc: x => true, readAllTextFunc: x => versionDataString ?? defaultVersionDataString)); var httpClient = new Lazy <IHttpClient>(() => IHttpClientFactory.Create(versionDataString ?? defaultVersionDataString)); var vsUIShellService = IVsServiceFactory.Create <SVsUIShell, IVsUIShell>(Mock.Of <IVsUIShell>()); var settingsManagerService = IVsServiceFactory.Create <SVsSettingsPersistenceManager, ISettingsManager>(Mock.Of <ISettingsManager>()); var vsSolutionService = IVsServiceFactory.Create <SVsSolution, IVsSolution>(IVsSolutionFactory.CreateWithAdviseUnadviseSolutionEvents(1, isFullyLoaded: isSolutionOpen)); var vsAppIdService = IVsServiceFactory.Create <SVsAppId, IVsAppId>(Mock.Of <IVsAppId>()); var vsShellService = IVsServiceFactory.Create <SVsShell, IVsShell>(Mock.Of <IVsShell>()); var compatibilityDetector = new TestDotNetCoreProjectCompatibilityDetector(projectAccessor, lazyDialogServices, threadHandling, vsShellUtilitiesHelper, fileSystem, httpClient, vsUIShellService, settingsManagerService, vsSolutionService, vsAppIdService, vsShellService, hasNewProjects, usingPreviewSDK, isCapabilityMatch); return(compatibilityDetector); }
public async Task SetProperty_DoesNothing_WhenThereIsNoPropertyPagesCatalog() { bool launchSettingsUpdated = false; var provider = new LaunchTargetPropertyPageValueProvider( project: UnconfiguredProjectFactory.Create( configuredProject: ConfiguredProjectFactory.Create( services: ConfiguredProjectServicesFactory.Create( propertyPagesCatalogProvider: null))), launchSettingsProvider: SetupLaunchSettingsProvider( activeProfileName: "Alpha", activeProfileLaunchTarget: "AlphaCommand", updateLaunchSettingsCallback: ls => launchSettingsUpdated = true), projectThreadingService: IProjectThreadingServiceFactory.Create()); var actualValue = await provider.OnSetPropertyValueAsync(string.Empty, "BetaPage", Mock.Of <IProjectProperties>()); Assert.Null(actualValue); Assert.False(launchSettingsUpdated); }
public async Task SetProperty_UpdatesActiveProfileCommand_WhenAPageWithAMatchingNameIsFound() { string newLaunchTarget = string.Empty; var catalogProvider = GetCatalogProviderAndData(); var provider = new LaunchTargetPropertyPageValueProvider( project: UnconfiguredProjectFactory.Create( configuredProject: ConfiguredProjectFactory.Create( services: ConfiguredProjectServicesFactory.Create( propertyPagesCatalogProvider: catalogProvider))), launchSettingsProvider: SetupLaunchSettingsProvider( activeProfileName: "Alpha", activeProfileLaunchTarget: "AlphaCommand", updateLaunchSettingsCallback: ls => newLaunchTarget = ls.ActiveProfile !.CommandName), projectThreadingService: IProjectThreadingServiceFactory.Create()); var actualValue = await provider.OnSetPropertyValueAsync(string.Empty, "GammaPage", Mock.Of <IProjectProperties>()); Assert.Null(actualValue); Assert.Equal(expected: "GammaCommand", actual: newLaunchTarget); }