mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-15 14:26:33 +01:00
f7d8046fb8
This change refactors internal hooks used by buildDotnetModule to support derivations with structured attributes. Note that this changes variable names that the internal hooks expect.
60 lines
2.1 KiB
Nix
60 lines
2.1 KiB
Nix
{ lib
|
|
, dotnet-sdk
|
|
, buildPackages # buildDotnetModule, dotnet-runtime
|
|
, testers
|
|
, runCommand
|
|
, removeReferencesTo
|
|
}:
|
|
let
|
|
inherit (buildPackages) buildDotnetModule dotnet-runtime;
|
|
|
|
app = buildDotnetModule {
|
|
name = "use-dotnet-from-env-test-application";
|
|
src = ./src;
|
|
nugetDeps = ./nuget-deps.nix;
|
|
useDotnetFromEnv = true;
|
|
env.TargetFramework = "net${lib.versions.majorMinor (lib.getVersion dotnet-sdk)}";
|
|
};
|
|
|
|
appWithoutFallback = app.overrideAttrs (oldAttrs: {
|
|
nativeBuildInputs = (oldAttrs.nativeBuildInputs or [ ]) ++ [
|
|
removeReferencesTo
|
|
];
|
|
postFixup = (oldAttrs.postFixup or "") + ''
|
|
remove-references-to -t ${dotnet-runtime} "$out/bin/Application"
|
|
'';
|
|
});
|
|
|
|
runtimeVersion = lib.getVersion dotnet-runtime;
|
|
runtimeVersionFile = builtins.toFile "dotnet-version.txt" runtimeVersion;
|
|
in
|
|
{
|
|
fallback = testers.testEqualContents {
|
|
assertion = "buildDotnetModule sets fallback DOTNET_ROOT in wrapper";
|
|
expected = runtimeVersionFile;
|
|
actual = runCommand "use-dotnet-from-env-fallback-test" { } ''
|
|
${app}/bin/Application >"$out"
|
|
'';
|
|
};
|
|
|
|
# Check that appWithoutFallback does not use fallback .NET runtime.
|
|
without-fallback = testers.testBuildFailure (runCommand "use-dotnet-from-env-without-fallback-test" { } ''
|
|
${appWithoutFallback}/bin/Application >"$out"
|
|
'');
|
|
|
|
# NB assumes that without-fallback above to passes.
|
|
use-dotnet-root-env = testers.testEqualContents {
|
|
assertion = "buildDotnetModule uses DOTNET_ROOT from environment in wrapper";
|
|
expected = runtimeVersionFile;
|
|
actual = runCommand "use-dotnet-from-env-root-test" { env.DOTNET_ROOT = dotnet-runtime; } ''
|
|
${appWithoutFallback}/bin/Application >"$out"
|
|
'';
|
|
};
|
|
use-dotnet-path-env = testers.testEqualContents {
|
|
assertion = "buildDotnetModule uses DOTNET_ROOT from dotnet in PATH in wrapper";
|
|
expected = runtimeVersionFile;
|
|
actual = runCommand "use-dotnet-from-env-path-test" { dotnetRuntime = dotnet-runtime; } ''
|
|
PATH=$dotnetRuntime''${PATH+:}$PATH ${appWithoutFallback}/bin/Application >"$out"
|
|
'';
|
|
};
|
|
}
|