public async Task LocalDebuggerCommand_ExistingCommand_ReturnsUnmodified(string existingCommand)
        {
            var properties = IProjectPropertiesFactory.CreateWithPropertyAndValue(WindowsLocalDebugger.LocalDebuggerCommandProperty, existingCommand);
            var provider   = new LocalDebuggerCommandValueProvider();

            Assert.Equal(existingCommand, await provider.OnGetEvaluatedPropertyValueAsync(existingCommand, properties));
        }
        public async Task LocalDebuggerCommandArgumentsProvider_NonEmptyCommand_ReturnsUnmodifiedArgs(string command, string args)
        {
            var properties = IProjectPropertiesFactory.CreateWithPropertyAndValue(WindowsLocalDebugger.LocalDebuggerCommandProperty, command);
            var debugger   = CreateInstance();

            Assert.Equal(args, await debugger.OnGetEvaluatedPropertyValueAsync(args, properties));
        }
예제 #3
0
        public async Task GetApplicationManifest(string appManifestPropValue, string noManifestValue, string expectedValue)
        {
            var provider          = new ApplicationManifestValueProvider(UnconfiguredProjectFactory.Create());
            var defaultProperties = IProjectPropertiesFactory.CreateWithPropertyAndValue("NoWin32Manifest", noManifestValue);

            var appManifestValue = await provider.OnGetEvaluatedPropertyValueAsync(appManifestPropValue, defaultProperties);

            Assert.Equal(expectedValue, appManifestValue);
        }
        public static async Task GetPropertyAsync_ExistingProperties()
        {
            var expected          = "echo $(ProjectDir)";
            var projectProperties = IProjectPropertiesFactory.CreateWithPropertyAndValue("PostBuildEvent", expected);

            var(success, actual) = await systemUnderTest.TryGetPropertyAsync(projectProperties);

            Assert.True(success);
            Assert.Equal(expected, actual);
        }
예제 #5
0
        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 LocalDebuggerCommandArgumentsProvider_EmptyCommand_ReturnsExec(string executable, string dll, bool useOutputGroups, string args)
        {
            var properites = IProjectPropertiesFactory.CreateWithPropertyAndValue(WindowsLocalDebugger.LocalDebuggerCommandProperty, "");
            var directory  = Directory.GetCurrentDirectory();
            var debugger   = CreateInstance(executable, executable, useOutputGroups);

            Assert.Equal(
                $"exec {directory + Path.DirectorySeparatorChar + dll}.dll {args}",
                await debugger.OnGetEvaluatedPropertyValueAsync(args, properites)
                );
        }
        public async Task WhenGettingTheValue_ReturnsResourceFileIfWin32ResourceIsSet()
        {
            var provider          = new ResourceSpecificationKindValueProvider(ITemporaryPropertyStorageFactory.Create());
            var defaultProperties = IProjectPropertiesFactory.CreateWithPropertyAndValue(ResourceSpecificationKindValueProvider.Win32ResourceMSBuildProperty, @"C:\alpha\beta\gamma.res");

            var result = await provider.OnGetEvaluatedPropertyValueAsync(
                ResourceSpecificationKindValueProvider.ResourceSpecificationKindProperty,
                string.Empty,
                defaultProperties);

            Assert.Equal(expected: ResourceSpecificationKindValueProvider.ResourceFileValue, actual: result);
        }
예제 #8
0
        public async Task OnSetPropertyValueAsync_ToAnythingOtherThanNone_ReturnsSameValue()
        {
            var provider = new NeutralLanguageValueProvider();

            var projectProperties = IProjectPropertiesFactory.CreateWithPropertyAndValue(NeutralLanguageValueProvider.NeutralLanguagePropertyName, "en-GB");
            var updatedValue      = await provider.OnSetPropertyValueAsync(NeutralLanguageValueProvider.NeutralLanguagePropertyName, "pt-BR", projectProperties);

            var valueInProjectProperties = await projectProperties.GetUnevaluatedPropertyValueAsync(NeutralLanguageValueProvider.NeutralLanguagePropertyName);

            Assert.Equal(expected: "pt-BR", actual: updatedValue);
            Assert.Equal(expected: "en-GB", actual: valueInProjectProperties);
        }
예제 #9
0
        public async Task OnSetPropertyValueAsync_ToNoneValue_DeletesTheProperty()
        {
            var provider = new NeutralLanguageValueProvider();

            var projectProperties = IProjectPropertiesFactory.CreateWithPropertyAndValue(NeutralLanguageValueProvider.NeutralLanguagePropertyName, "en-GB");
            var updatedValue      = await provider.OnSetPropertyValueAsync(NeutralLanguageValueProvider.NeutralLanguagePropertyName, NeutralLanguageValueProvider.NoneValue, projectProperties);

            var valueInProjectProperties = await projectProperties.GetUnevaluatedPropertyValueAsync(NeutralLanguageValueProvider.NeutralLanguagePropertyName);

            Assert.Null(updatedValue);
            Assert.Null(valueInProjectProperties);
        }
        public static async Task SetPropertyAsync_RemoveExistingProperties()
        {
            var postbuildEventProjectProperties =
                IProjectPropertiesFactory.CreateWithPropertyAndValue("PostBuildEvent", "echo $(ProjectDir)");
            var success = await systemUnderTest.TrySetPropertyAsync(" ", postbuildEventProjectProperties);

            Assert.True(success);

            var result = await postbuildEventProjectProperties.GetUnevaluatedPropertyValueAsync("PostBuildEvent");

            Assert.Null(result);
        }
        public async Task WhenGettingTheValue_ReturnsIconAndManifestIfManifestSet()
        {
            var provider          = new ResourceSpecificationKindValueProvider(ITemporaryPropertyStorageFactory.Create());
            var defaultProperties = IProjectPropertiesFactory.CreateWithPropertyAndValue(ResourceSpecificationKindValueProvider.ApplicationManifestMSBuildProperty, @"C:\alpha\beta\app.config");

            var result = await provider.OnGetEvaluatedPropertyValueAsync(
                ResourceSpecificationKindValueProvider.ResourceSpecificationKindProperty,
                string.Empty,
                defaultProperties);

            Assert.Equal(expected: ResourceSpecificationKindValueProvider.IconAndManifestValue, actual: result);
        }
예제 #12
0
        public void GetBuildMacroValue(string macroName, string expectedValue, int expectedRetVal)
        {
            var projectProperties         = IProjectPropertiesFactory.CreateWithPropertyAndValue("MyBuildMacro", "MyBuildMacroValue");
            var propertiesProvider        = IProjectPropertiesProviderFactory.Create(commonProps: projectProperties);
            var configuredProjectServices = Mock.Of <ConfiguredProjectServices>(o =>
                                                                                o.ProjectPropertiesProvider == propertiesProvider);
            var configuredProject = ConfiguredProjectFactory.Create(services: configuredProjectServices);

            var buildMacroInfo = CreateInstance(configuredProject);
            int retVal         = buildMacroInfo.GetBuildMacroValue(macroName, out string?macroValue);

            Assert.Equal(expectedRetVal, retVal);
            Assert.Equal(expectedValue, macroValue);
        }
예제 #13
0
        public void BuildMacroInfoTests_GetBuildMacroValue(string macroName, string expectedValue, int expectedRetVal)
        {
            var projectProperties         = IProjectPropertiesFactory.CreateWithPropertyAndValue("MyBuildMacro", "MyBuildMacroValue");
            var propertiesProvider        = IProjectPropertiesProviderFactory.Create(commonProps: projectProperties);
            var configuredProjectServices = Mock.Of <IConfiguredProjectServices>(o =>
                                                                                 o.ProjectPropertiesProvider == propertiesProvider);
            var configuredProject = ConfiguredProjectFactory.Create(services: configuredProjectServices);
            ActiveConfiguredProject <ConfiguredProject> activeConfiguredProject = ActiveConfiguredProjectFactory.ImplementValue(() => configuredProject);
            var threadingService = IProjectThreadingServiceFactory.Create();

            var buildMacroInfo = new BuildMacroInfo(activeConfiguredProject, threadingService);
            int retVal         = buildMacroInfo.GetBuildMacroValue(macroName, out string macroValue);

            Assert.Equal(expectedRetVal, retVal);
            Assert.Equal(expectedValue, macroValue);
        }
예제 #14
0
        public static async Task SetPropertyTest_RemoveExistingProperties()
        {
            var root = @"<Project Sdk=""Microsoft.NET.Sdk"">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.1</TargetFramework>
    <PreBuildEvent>echo $(ProjectDir)</PreBuildEvent>
  </PropertyGroup>
</Project>".AsProjectRootElement();

            var prebuildEventProjectProperties =
                IProjectPropertiesFactory.CreateWithPropertyAndValue("PreBuildEvent", "echo $(ProjectDir)");
            await systemUnderTest.SetPropertyAsync(" ", prebuildEventProjectProperties, root);

            var result = await prebuildEventProjectProperties.GetUnevaluatedPropertyValueAsync("PreBuildEvent");

            Assert.Null(result);
        }
예제 #15
0
        public static async Task GetPropertyTest_ExistingProperties()
        {
            var root              = @"
<Project Sdk=""Microsoft.NET.Sdk"">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.1</TargetFramework>
    <PreBuildEvent>echo $(ProjectDir)</PreBuildEvent>
  </PropertyGroup>

</Project>".AsProjectRootElement();
            var expected          = "echo $(ProjectDir)";
            var projectProperties = IProjectPropertiesFactory.CreateWithPropertyAndValue("PreBuildEvent", expected);
            var actual            = await systemUnderTest.GetPropertyAsync(root, projectProperties);

            Assert.Equal(expected, actual);
        }
        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);
        }
예제 #17
0
    public async Task CheckValueAsync(string effectiveAnalysisLevel, string expectedWarningLevelOverriddenValue)
    {
        var provider          = new WarningLevelOverriddenValueProvider();
        var defaultProperties = IProjectPropertiesFactory.CreateWithPropertyAndValue(
            WarningLevelOverriddenValueProvider.EffectiveAnalysisLevelPropertyName,
            effectiveAnalysisLevel);

        var unevaluatedResult = await provider.OnGetUnevaluatedPropertyValueAsync(
            WarningLevelOverriddenValueProvider.WarningLevelOverriddenPropertyName,
            string.Empty,
            defaultProperties);

        Assert.Equal(expectedWarningLevelOverriddenValue, actual: unevaluatedResult);

        var evaluatedResult = await provider.OnGetEvaluatedPropertyValueAsync(
            WarningLevelOverriddenValueProvider.WarningLevelOverriddenPropertyName,
            string.Empty,
            defaultProperties);

        Assert.Equal(expectedWarningLevelOverriddenValue, actual: evaluatedResult);
    }