Idris2/nix/test.nix
2021-04-19 11:23:58 +01:00

46 lines
1.3 KiB
Nix

{ nixpkgs
, idris
, flake-utils
, system
, stdenv
, runCommand
, lib
}:
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};
in templateBuild;
templateBuildDefault = createTemplate ./templates/pkg/flake.nix {} "build";
templateBuildDefaultLibrary = createTemplate ./templates/pkg/flake.nix {} "installLibrary";
templateBuildWithDeps = createTemplate ./templates/pkgWithDeps/flake.nix
{ pkg = templateBuildDefaultLibrary; } "build";
testsTemplate = {
checkFoo = ''
${templateBuildDefault}/bin/runMyPkg \
| grep "Foo"
'';
};
testsTemplateWithDeps = {
checkBar = ''
${templateBuildWithDeps}/bin/runMyPkg2 \
| grep "Bar"
'';
};
in
withTests testsTemplate templateBuildDefault
// withTests testsTemplateWithDeps templateBuildWithDeps
// { idris2Tests = idris.defaultPackage.${system}.overrideAttrs (a: { doCheck = true; }); }