Simplify test hook
This commit is contained in:
parent
38e42d280a
commit
1ef1cc5e27
2 changed files with 25 additions and 13 deletions
|
@ -23,12 +23,7 @@ namespace Microsoft.DotNet.MSBuildSdkResolver
|
|||
}
|
||||
|
||||
// Test hook to provide environment variables without polluting the test process.
|
||||
internal DotNetMSBuildSdkResolver(IReadOnlyDictionary<string, string> mockEnvironmentVariables)
|
||||
: this(key => mockEnvironmentVariables.TryGetValue(key, out var value) ? value : null)
|
||||
{
|
||||
}
|
||||
|
||||
private DotNetMSBuildSdkResolver(Func<string, string> getEnvironmentVariable)
|
||||
internal DotNetMSBuildSdkResolver(Func<string, string> getEnvironmentVariable)
|
||||
{
|
||||
_getEnvironmentVariable = getEnvironmentVariable;
|
||||
}
|
||||
|
|
|
@ -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<string, string>
|
||||
{
|
||||
["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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue