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.
|
// Test hook to provide environment variables without polluting the test process.
|
||||||
internal DotNetMSBuildSdkResolver(IReadOnlyDictionary<string, string> mockEnvironmentVariables)
|
internal DotNetMSBuildSdkResolver(Func<string, string> getEnvironmentVariable)
|
||||||
: this(key => mockEnvironmentVariables.TryGetValue(key, out var value) ? value : null)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
private DotNetMSBuildSdkResolver(Func<string, string> getEnvironmentVariable)
|
|
||||||
{
|
{
|
||||||
_getEnvironmentVariable = getEnvironmentVariable;
|
_getEnvironmentVariable = getEnvironmentVariable;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ using System.IO;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
using Xunit.Abstractions;
|
using Xunit.Abstractions;
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace Microsoft.DotNet.Cli.Utils.Tests
|
namespace Microsoft.DotNet.Cli.Utils.Tests
|
||||||
{
|
{
|
||||||
|
@ -73,13 +74,7 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
|
||||||
}
|
}
|
||||||
|
|
||||||
public SdkResolver CreateResolver()
|
public SdkResolver CreateResolver()
|
||||||
=> new DotNetMSBuildSdkResolver(
|
=> new DotNetMSBuildSdkResolver(GetEnvironmentVariable);
|
||||||
new Dictionary<string, string>
|
|
||||||
{
|
|
||||||
["ProgramW6432"] = GetProgramFilesDirectory(ProgramFiles.X64).FullName,
|
|
||||||
["ProgramFiles(x86)"] = GetProgramFilesDirectory(ProgramFiles.X86).FullName,
|
|
||||||
["ProgramFiles"] = GetProgramFilesDirectory(ProgramFiles.Default).FullName,
|
|
||||||
});
|
|
||||||
|
|
||||||
public DirectoryInfo GetSdkDirectory(ProgramFiles programFiles, string sdkName, string sdkVersion)
|
public DirectoryInfo GetSdkDirectory(ProgramFiles programFiles, string sdkName, string sdkVersion)
|
||||||
=> TestDirectory.GetDirectory(GetProgramFilesDirectory(programFiles).FullName, "dotnet", "sdk", sdkVersion, "Sdks", sdkName, "Sdk");
|
=> 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)
|
public void CreateGlobalJson(DirectoryInfo directory, string version)
|
||||||
=> File.WriteAllText(directory.GetFile("global.json").FullName,
|
=> File.WriteAllText(directory.GetFile("global.json").FullName,
|
||||||
$@"{{ ""sdk"": {{ ""version"": ""{version}"" }} }}");
|
$@"{{ ""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
|
private sealed class MockContext : SdkResolverContext
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue