private ConsoleDebugTargetsProvider GetDebugTargetsProvider(string outputType = "exe", Dictionary <string, string> properties = null) { _mockFS.WriteAllText(@"c:\test\Project\someapp.exe", ""); _mockFS.CreateDirectory(@"c:\test\Project"); _mockFS.CreateDirectory(@"c:\test\Project\bin\"); _mockFS.WriteAllText(@"c:\program files\dotnet\dotnet.exe", ""); _mockEnvironment.Setup(s => s.GetEnvironmentVariable("Path")).Returns(() => _Path); var project = UnconfiguredProjectFactory.Create(filePath: _ProjectFile); var outputTypeEnum = new PageEnumValue(new EnumValue() { Name = outputType }); var data = new PropertyPageData() { Category = ConfigurationGeneral.SchemaName, PropertyName = ConfigurationGeneral.OutputTypeProperty, Value = outputTypeEnum }; var projectProperties = ProjectPropertiesFactory.Create(project, data); if (properties == null) { properties = new Dictionary <string, string>() { { "RunCommand", @"dotnet" }, { "RunArguments", "exec " + "\"" + @"c:\test\project\bin\project.dll" + "\"" }, { "RunWorkingDirectory", @"bin\" }, { "TargetFrameworkIdentifier", @".NetCoreApp" }, { "OutDir", @"c:\test\project\bin\" } }; } var delegatePropertiesMock = IProjectPropertiesFactory .MockWithPropertiesAndValues(properties); var delegateProvider = IProjectPropertiesProviderFactory.Create(null, delegatePropertiesMock.Object); var configuredProjectServices = Mock.Of <IConfiguredProjectServices>(o => o.ProjectPropertiesProvider == delegateProvider); var configuredProject = Mock.Of <ConfiguredProject>(o => o.UnconfiguredProject == project && o.Services == configuredProjectServices); _mockTokenReplace.Setup(s => s.ReplaceTokensInProfileAsync(It.IsAny <ILaunchProfile>())).Returns <ILaunchProfile>(p => Task.FromResult(p)); var activeDebugFramework = Mock.Of <IActiveDebugFrameworkServices>(o => o.GetConfiguredProjectForActiveFrameworkAsync() == Task.FromResult(configuredProject)); var debugProvider = new ConsoleDebugTargetsProvider( configuredProject, _mockTokenReplace.Object, _mockFS, _mockEnvironment.Object, activeDebugFramework, projectProperties); return(debugProvider); }
ConsoleDebugTargetsProvider GetDebugTargetsProvider(string outputType = "exe", Dictionary <string, string> properties = null) { _mockFS.WriteAllText(@"c:\test\Project\someapp.exe", ""); _mockFS.CreateDirectory(@"c:\test\Project"); _mockFS.WriteAllText(@"c:\program files\dotnet\dotnet.exe", ""); LaunchProfile activeProfile = new LaunchProfile() { Name = "MyApplication", CommandLineArgs = "--someArgs", ExecutablePath = @"c:\test\Project\someapp.exe" }; _mockEnvironment.Setup(s => s.GetEnvironmentVariable("Path")).Returns(() => _Path); var project = IUnconfiguredProjectFactory.Create(null, null, _ProjectFile); var outputTypeEnum = new PageEnumValue(new EnumValue() { Name = outputType }); var data = new PropertyPageData() { Category = ConfigurationGeneral.SchemaName, PropertyName = ConfigurationGeneral.OutputTypeProperty, Value = outputTypeEnum }; var projectProperties = ProjectPropertiesFactory.Create(project, data); if (properties == null) { properties = new Dictionary <string, string>() { { "TargetPath", @"c:\test\project\bin\project.dll" }, { "TargetFrameworkIdentifier", @".NetCoreApp" } }; } var delegatePropertiesMock = IProjectPropertiesFactory .MockWithPropertiesAndValues(properties); var delegateProvider = IProjectPropertiesProviderFactory.Create(null, delegatePropertiesMock.Object); IConfiguredProjectServices configuredProjectServices = Mock.Of <IConfiguredProjectServices>(o => o.ProjectPropertiesProvider == delegateProvider); ConfiguredProject configuredProject = Mock.Of <ConfiguredProject>(o => o.UnconfiguredProject == project && o.Services == configuredProjectServices); _mockTokenReplace.Setup(s => s.ReplaceTokensInProfileAsync(It.IsAny <ILaunchProfile>())).Returns <ILaunchProfile>(p => Task.FromResult(p)); var debugProvider = new ConsoleDebugTargetsProvider( configuredProject, _mockTokenReplace.Object, _mockFS, _mockEnvironment.Object, projectProperties); return(debugProvider); }
private ConsoleDebugTargetsProvider GetDebugTargetsProvider(string outputType = "exe", Dictionary <string, string> properties = null, IVsDebugger10 debugger = null) { _mockFS.WriteAllText(@"c:\test\Project\someapp.exe", ""); _mockFS.CreateDirectory(@"c:\test\Project"); _mockFS.CreateDirectory(@"c:\test\Project\bin\"); _mockFS.WriteAllText(@"c:\program files\dotnet\dotnet.exe", ""); var project = UnconfiguredProjectFactory.Create(filePath: _ProjectFile); var outputTypeEnum = new PageEnumValue(new EnumValue() { Name = outputType }); var data = new PropertyPageData() { Category = ConfigurationGeneral.SchemaName, PropertyName = ConfigurationGeneral.OutputTypeProperty, Value = outputTypeEnum }; var projectProperties = ProjectPropertiesFactory.Create(project, data); if (properties == null) { properties = new Dictionary <string, string>() { { "RunCommand", @"dotnet" }, { "RunArguments", "exec " + "\"" + @"c:\test\project\bin\project.dll" + "\"" }, { "RunWorkingDirectory", @"bin\" }, { "TargetFrameworkIdentifier", @".NetCoreApp" }, { "OutDir", @"c:\test\project\bin\" } }; } var delegatePropertiesMock = IProjectPropertiesFactory .MockWithPropertiesAndValues(properties); var delegateProvider = IProjectPropertiesProviderFactory.Create(null, delegatePropertiesMock.Object); var configuredProjectServices = Mock.Of <ConfiguredProjectServices>(o => o.ProjectPropertiesProvider == delegateProvider); var configuredProject = Mock.Of <ConfiguredProject>(o => o.UnconfiguredProject == project && o.Services == configuredProjectServices); var environment = IEnvironmentHelperFactory.ImplementGetEnvironmentVariable(_Path); return(CreateInstance(project: project, configuredProject: configuredProject, fileSystem: _mockFS, properties: projectProperties, environment: environment, debugger: debugger)); }
private IProjectProperties CreateProjectProperties(Dictionary <string, string> additionalProps, bool saveInProjectFile) { additionalProps = additionalProps ?? new Dictionary <string, string>(); // Configure whether AssemblyInfo properties are generated in project file or not. var saveInProjectFileStr = saveInProjectFile.ToString(); foreach (var kvp in AssemblyInfoProperties.s_assemblyPropertyInfoMap) { var generatePropertyInProjectFileName = kvp.Value.GeneratePropertyInProjectFileName; additionalProps[generatePropertyInProjectFileName] = saveInProjectFileStr; } additionalProps["GenerateAssemblyInfo"] = saveInProjectFileStr; return(IProjectPropertiesFactory.MockWithPropertiesAndValues(additionalProps).Object); }
public async Task VerifySetKeyFilePropertyAsync() { string projectFolder = @"C:\project\root"; string projectFullPath = $@"{projectFolder}\project.testproj"; string keyFileName = "KeyFile.snk"; string keyFileFullPath = $@"{projectFolder}\{keyFileName}"; var delegatePropertiesMock = IProjectPropertiesFactory .MockWithPropertiesAndValues(new Dictionary <string, string>() { { AssemblyOriginatorKeyFilePropertyName, keyFileFullPath } }); var delegateProperties = delegatePropertiesMock.Object; var delegateProvider = IProjectPropertiesProviderFactory.Create(delegateProperties); // Verify get key file value without intercepted provider. var properties = delegateProvider.GetProperties("path/to/project.testproj", null, null); var propertyValue = await properties.GetEvaluatedPropertyValueAsync(AssemblyOriginatorKeyFilePropertyName); Assert.Equal(keyFileFullPath, propertyValue); // Verify relative path key file value from intercepted key file provider. var unconfiguredProject = UnconfiguredProjectFactory.Create(filePath: projectFullPath); var instanceProvider = IProjectInstancePropertiesProviderFactory.Create(); var keyFileProvider = new AssemblyOriginatorKeyFileValueProvider(unconfiguredProject); var providerMetadata = IInterceptingPropertyValueProviderMetadataFactory.Create(AssemblyOriginatorKeyFilePropertyName); var lazyArray = new[] { new Lazy <IInterceptingPropertyValueProvider, IInterceptingPropertyValueProviderMetadata>( () => keyFileProvider, providerMetadata) }; var interceptedProvider = new ProjectFileInterceptedProjectPropertiesProvider(delegateProvider, instanceProvider, unconfiguredProject, lazyArray); var propertyNames = await properties.GetPropertyNamesAsync(); Assert.Single(propertyNames); Assert.Equal(AssemblyOriginatorKeyFilePropertyName, propertyNames.First()); properties = interceptedProvider.GetProperties("path/to/project.testproj", null, null); string newKeyFileName = "KeyFile2.snk"; string newKeyFileFullPath = $@"{projectFolder}\{newKeyFileName}"; await properties.SetPropertyValueAsync(AssemblyOriginatorKeyFilePropertyName, newKeyFileFullPath); propertyValue = await properties.GetEvaluatedPropertyValueAsync(AssemblyOriginatorKeyFilePropertyName); Assert.Equal(newKeyFileName, propertyValue); }
public async Task VerifyInterceptedViaSnapshotInstanceCommonPropertiesProviderAsync() { var delegatePropertiesMock = IProjectPropertiesFactory.MockWithPropertiesAndValues( new Dictionary <string, string?> { { MockPropertyName, "DummyValue" } }); var delegateProperties = delegatePropertiesMock.Object; var delegateInstanceProvider = IProjectInstancePropertiesProviderFactory.ImplementsGetCommonProperties(delegateProperties); bool getEvaluatedInvoked = false; bool getUnevaluatedInvoked = false; bool setValueInvoked = false; var mockPropertyProvider = IInterceptingPropertyValueProviderFactory.Create(MockPropertyName, onGetEvaluatedPropertyValue: (v, p) => { getEvaluatedInvoked = true; return(v); }, onGetUnevaluatedPropertyValue: (v, p) => { getUnevaluatedInvoked = true; return(v); }, onSetPropertyValue: (v, p, d) => { setValueInvoked = true; return(v); }); var unconfiguredProject = UnconfiguredProjectFactory.Create(); var provider = IProjectPropertiesProviderFactory.Create(); var interceptedProvider = new ProjectFileInterceptedViaSnapshotProjectPropertiesProvider(provider, delegateInstanceProvider, unconfiguredProject, new[] { mockPropertyProvider }); var properties = interceptedProvider.GetCommonProperties(projectInstance: null); // Verify interception for GetEvaluatedPropertyValueAsync. string?propertyValue = await properties.GetEvaluatedPropertyValueAsync(MockPropertyName); Assert.True(getEvaluatedInvoked); // Verify interception for GetUnevaluatedPropertyValueAsync. propertyValue = await properties.GetUnevaluatedPropertyValueAsync(MockPropertyName); Assert.True(getUnevaluatedInvoked); // Verify interception for SetPropertyValueAsync. await properties.SetPropertyValueAsync(MockPropertyName, "NewValue", null); Assert.True(setValueInvoked); }