dream2nix/tests/default.nix
2023-03-22 12:06:42 +08:00

77 lines
1.7 KiB
Nix

{
inputs,
self,
...
}: {
perSystem = {
config,
pkgs,
system,
...
}: let
b = builtins;
callTests = f:
pkgs.callPackage f {
inherit self;
framework = config.d2n;
};
in {
apps = {
tests-unit.type = "app";
tests-unit.program =
b.toString
(callTests ./unit);
tests-integration.type = "app";
tests-integration.program =
b.toString
(callTests ./integration);
tests-integration-d2n-flakes.type = "app";
tests-integration-d2n-flakes.program =
b.toString
(callTests ./integration-d2n-flakes);
tests-examples.type = "app";
tests-examples.program =
b.toString
(callTests ./examples);
tests-all.type = "app";
tests-all.program =
b.toString
(config.d2n.utils.writePureShellScript
[
pkgs.alejandra
pkgs.coreutils
pkgs.gitMinimal
pkgs.nix
]
''
echo "check for correct formatting"
WORKDIR=$(realpath ./.)
cd $TMPDIR
cp -r $WORKDIR ./repo
cd ./repo
${config.apps.format.program} --fail-on-change
cd -
echo "running unit tests"
${config.apps.tests-unit.program}
echo "running integration tests"
${config.apps.tests-integration.program}
echo "checking flakes under ./examples"
${config.apps.tests-examples.program}
echo "running nix flake check"
cd $WORKDIR
nix flake show >/dev/null
nix flake check
'');
};
};
}