From 1ef1cc5e277f8e7ca9c6bf64161cfbb7282242d6 Mon Sep 17 00:00:00 2001 From: Nick Guerrera Date: Mon, 1 May 2017 13:13:48 -0700 Subject: [PATCH] Simplify test hook --- .../MSBuildSdkResolver.cs | 7 +---- .../GivenAnMSBuildSdkResolver.cs | 31 ++++++++++++++----- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs index fe8cfd905..418ee8bb8 100644 --- a/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs +++ b/src/Microsoft.DotNet.MSBuildSdkResolver/MSBuildSdkResolver.cs @@ -23,12 +23,7 @@ namespace Microsoft.DotNet.MSBuildSdkResolver } // Test hook to provide environment variables without polluting the test process. - internal DotNetMSBuildSdkResolver(IReadOnlyDictionary mockEnvironmentVariables) - : this(key => mockEnvironmentVariables.TryGetValue(key, out var value) ? value : null) - { - } - - private DotNetMSBuildSdkResolver(Func getEnvironmentVariable) + internal DotNetMSBuildSdkResolver(Func getEnvironmentVariable) { _getEnvironmentVariable = getEnvironmentVariable; } diff --git a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs index 42e996c81..5870dab63 100644 --- a/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs +++ b/test/Microsoft.DotNet.MSBuildSdkResolver.Tests/GivenAnMSBuildSdkResolver.cs @@ -10,6 +10,7 @@ using System.IO; using System.Runtime.CompilerServices; using Xunit; using Xunit.Abstractions; +using System; namespace Microsoft.DotNet.Cli.Utils.Tests { @@ -73,13 +74,7 @@ namespace Microsoft.DotNet.Cli.Utils.Tests } public SdkResolver CreateResolver() - => new DotNetMSBuildSdkResolver( - new Dictionary - { - ["ProgramW6432"] = GetProgramFilesDirectory(ProgramFiles.X64).FullName, - ["ProgramFiles(x86)"] = GetProgramFilesDirectory(ProgramFiles.X86).FullName, - ["ProgramFiles"] = GetProgramFilesDirectory(ProgramFiles.Default).FullName, - }); + => new DotNetMSBuildSdkResolver(GetEnvironmentVariable); public DirectoryInfo GetSdkDirectory(ProgramFiles programFiles, string sdkName, string sdkVersion) => TestDirectory.GetDirectory(GetProgramFilesDirectory(programFiles).FullName, "dotnet", "sdk", sdkVersion, "Sdks", sdkName, "Sdk"); @@ -97,6 +92,28 @@ namespace Microsoft.DotNet.Cli.Utils.Tests public void CreateGlobalJson(DirectoryInfo directory, string version) => File.WriteAllText(directory.GetFile("global.json").FullName, $@"{{ ""sdk"": {{ ""version"": ""{version}"" }} }}"); + + public string GetEnvironmentVariable(string variable) + { + ProgramFiles programFiles; + + switch (variable) + { + case "ProgramW6432": + programFiles = ProgramFiles.X64; + break; + case "ProgramFiles(x86)": + programFiles = ProgramFiles.X86; + break; + case "ProgramFiles": + programFiles = ProgramFiles.Default; + break; + default: + return null; + } + + return GetProgramFilesDirectory(programFiles).FullName; + } } private sealed class MockContext : SdkResolverContext