Files
util.nix/test/package/windows-devshell/default.nix
2026-05-02 15:31:26 +00:00

45 lines
1.4 KiB
Nix

{ system, inputs, self, pkgs }:
let
lib = inputs.nixpkgs.lib;
windowsDevShellStandalone = self.packages.${system}.windows-devshell-standalone;
mkTest = testName: testDrv: pkgs.runCommand "windows-devshell-test-${testName}"
{
nativeBuildInputs = [ pkgs.coreutils pkgs.gnugrep ];
windowsDevShellStandalone = windowsDevShellStandalone;
} ''
${builtins.readFile self.legacyPackages.${system}.helpers.posix-shell.log}
test=${testDrv}
${builtins.readFile ./launch.sh}
mkdir -p "$out"
'';
testDir = builtins.readDir ./test;
testDrvs =
lib.mapAttrs' (n: v:
lib.nameValuePair (lib.removeSuffix ".sh" n) v
) (lib.filterAttrs (_: v: v != null)
(lib.mapAttrs (n: t:
if t == "directory" then
pkgs.runCommand "test-${n}" {} ''
if ! [ -f ${./test + "/${n}" + /run.sh} ]; then
echo "no run.sh in test/${n}"
exit 1
fi
mkdir -p "$out"
cp -r ${./test + "/${n}"}/* "$out/"
chmod +x "$out/run.sh"
''
else if lib.hasSuffix ".sh" n then
pkgs.runCommand "test-${lib.removeSuffix ".sh" n}" {} ''
mkdir -p "$out"
install -Dm755 ${./test + "/${n}"} "$out/run.sh"
''
else
null
) testDir));
in
(lib.mapAttrs' (name: drv: lib.nameValuePair "windows-${name}" (mkTest "windows-${name}" drv)) testDrvs)