Idris2/nix/test.nix

43 lines
1.3 KiB
Nix
Raw Normal View History

{ nixpkgs, idris, flake-utils, system, stdenv, runCommand, lib }:
2021-03-15 17:21:50 +03:00
let
withTests = tests: drv:
let
testDrvs = lib.mapAttrs (name: testScript:
runCommand "${drv.name}-test-${name}" { } ''
${testScript}
touch "$out"
'') tests;
in testDrvs;
createTemplate = flake: inputs: type:
let
self = import flake;
template =
self.outputs ({ inherit self nixpkgs idris flake-utils; } // inputs);
templateBuild = template.packages.${system}.${type};
2021-03-15 17:21:50 +03:00
in templateBuild;
templateBuildDefault = createTemplate ./templates/pkg/flake.nix { } "executable";
templateBuildDefaultLibrary =
createTemplate ./templates/pkg/flake.nix { } "library" { };
templateBuildWithDeps = createTemplate ./templates/pkgWithDeps/flake.nix {
pkg = templateBuildDefaultLibrary;
} "executable";
2021-03-15 17:21:50 +03:00
testsTemplate = {
checkFoo = ''
${templateBuildDefault}/bin/runMyPkg \
| grep "Foo"
'';
};
testsTemplateWithDeps = {
checkBar = ''
${templateBuildWithDeps}/bin/runMyPkg2 \
| grep "Bar"
'';
};
in withTests testsTemplate templateBuildDefault
// withTests testsTemplateWithDeps templateBuildWithDeps // {
idris2Tests =
idris.packages.${system}.default.overrideAttrs (a: { doCheck = true; });
}