Skip to content

Commit

Permalink
set dotnet host path for installed sdk in tests
Browse files Browse the repository at this point in the history
  • Loading branch information
yazeedobaid committed Nov 15, 2021
1 parent b6c87a8 commit aef20fc
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 11 deletions.
12 changes: 8 additions & 4 deletions src/app/Fake.Runtime/SdkAssemblyResolver.fs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ open Microsoft.Deployment.DotNet.Releases
/// package extract them a and reference them.
type SdkAssemblyResolver() =
#if DOTNETCORE
let CustomDotNetHostPath = Environment.environVarOrDefault "FAKE_SDK_RESOLVER_CUSTOM_DOTNET_PATH" ""

member this.SdkVersionRaw = "6.0"

Expand Down Expand Up @@ -72,9 +73,12 @@ type SdkAssemblyResolver() =
let systemInstallDir = DotNet.defaultSystemInstallDir

let dotnetHostPath =
match File.Exists(userInstallDir </> dotnetHost) with
| true -> userInstallDir
| false -> systemInstallDir
if not(String.isNullOrEmpty CustomDotNetHostPath)
then CustomDotNetHostPath
else
match File.Exists(userInstallDir </> dotnetHost) with
| true -> userInstallDir
| false -> systemInstallDir

let referenceAssembliesPath =
dotnetHostPath
Expand All @@ -93,7 +97,7 @@ type SdkAssemblyResolver() =
)
|> Seq.toList
| false ->
failwithf "Could not found referenced assemblies in path: '%s', please check installed SDK and runtime versions" referenceAssembliesPath
failwithf "Could not find referenced assemblies in path: '%s', please check installed SDK and runtime versions" referenceAssembliesPath

member this.NetStandard20ReferenceAssemblies
(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ open System.IO
open Fake.IO.FileSystemOperators
open Expecto
open Fake.Core.IntegrationTests.TestHelpers
open Fake.Runtime

[<Tests>]
let tests =
Expand All @@ -32,13 +33,26 @@ let tests =

testCase "Runner run script with 6.0.100-preview.3.21202.5 SDK version assemblies" <| fun _ ->
try
use d = createTestDir()
let installerDir = Path.Combine(d.Dir, "Temp Dir")
Directory.create installerDir
let preparedDir = Path.Combine(d.Dir, "Install Dir")
Directory.create preparedDir

DotNet.install (fun option ->
{ option with
{ option with
InstallerOptions = fun o ->
{ option.InstallerOptions o with
CustomDownloadDir = Some installerDir }
ForceInstall = true
WorkingDirectory = scenarioTempPath "core-reference-assemblies-net60"
WorkingDirectory = scenarioTempPath "core-reference-assemblies-net60-preview"
CustomInstallDir = Some preparedDir
Channel = DotNet.CliChannel.Version 6 0
Version = DotNet.CliVersion.Version "6.0.100-preview.3.21202.5" })
|> ignore

Environment.setEnvironVar "FAKE_SDK_RESOLVER_CUSTOM_DOTNET_PATH" preparedDir

let result =
handleAndFormat <| fun _ ->
fakeRunAndCheck Ctx.Verbose "reference-assemblies.fsx" "reference-assemblies.fsx" "core-reference-assemblies-net60-preview"
Expand All @@ -51,20 +65,31 @@ let tests =
(sprintf "stdout should contain path like '%s', but was: '%s'" expectedNet6PathPortion stdOut)
|> Expect.isTrue (stdOut.Contains expectedNet6PathPortion)
finally
ignore ""
// clean up after the test run
Directory.delete DotNet.defaultUserInstallDir
Environment.setEnvironVar "FAKE_SDK_RESOLVER_CUSTOM_DOTNET_PATH" ""

testCase "Runner run script with 6.0.100 SDK version assemblies" <| fun _ ->
try
use d = createTestDir()
let installerDir = Path.Combine(d.Dir, "Temp Dir")
Directory.create installerDir
let preparedDir = Path.Combine(d.Dir, "Install Dir")
Directory.create preparedDir

DotNet.install (fun option ->
{ option with
{ option with
InstallerOptions = fun o ->
{ option.InstallerOptions o with
CustomDownloadDir = Some installerDir }
ForceInstall = true
WorkingDirectory = scenarioTempPath "core-reference-assemblies-net60"
CustomInstallDir = Some preparedDir
Channel = DotNet.CliChannel.Version 6 0
Version = DotNet.CliVersion.Version "6.0.100" })
|> ignore

Environment.setEnvironVar "FAKE_SDK_RESOLVER_CUSTOM_DOTNET_PATH" preparedDir

let result =
handleAndFormat <| fun _ ->
fakeRunAndCheck Ctx.Verbose "reference-assemblies.fsx" "reference-assemblies.fsx" "core-reference-assemblies-net60"
Expand All @@ -77,8 +102,7 @@ let tests =
(sprintf "stdout should contain path like '%s', but was: '%s'" expectedNet6PathPortion stdOut)
|> Expect.isTrue (stdOut.Contains expectedNet6PathPortion)
finally
ignore ""
// clean up after the test run
Directory.delete DotNet.defaultUserInstallDir
Environment.setEnvironVar "FAKE_SDK_RESOLVER_CUSTOM_DOTNET_PATH" ""

]

0 comments on commit aef20fc

Please sign in to comment.