예제 #1
0
        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);
        }
예제 #2
0
        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));
        }
예제 #4
0
        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);
        }