dream2nix/tests/integration/default.nix

63 lines
1.2 KiB
Nix
Raw Normal View History

2022-08-11 22:27:21 +03:00
{
self,
lib,
async,
bash,
coreutils,
git,
parallel,
nix,
utils,
dream2nixWithExternals,
...
}: let
l = lib // builtins;
tests = ./tests;
testScript =
utils.writePureShellScript
[
async
bash
coreutils
git
nix
]
''
cd $TMPDIR
2022-08-11 22:27:21 +03:00
dir=$1
shift
echo -e "\nrunning test $dir"
start_time=$(date +%s)
2022-08-11 22:27:21 +03:00
cp -r ${tests}/$dir/* .
chmod -R +w .
nix flake lock --override-input dream2nix ${../../.}
nix run .#resolveImpure || echo "no resolveImpure probably?"
nix build
nix flake check
end_time=$(date +%s)
elapsed=$(( end_time - start_time ))
echo -e "testing example for $dir took $elapsed seconds"
echo "$elapsed sec: $dir" >> $STATS_FILE
2022-08-11 22:27:21 +03:00
'';
in
utils.writePureShellScript
[
coreutils
parallel
]
''
export STATS_FILE=$(mktemp)
2022-08-11 22:27:21 +03:00
if [ -z ''${1+x} ]; then
JOBS=''${JOBS:-$(nproc)}
parallel --halt now,fail=1 -j$JOBS -a <(ls ${tests}) ${testScript}
2022-08-11 22:27:21 +03:00
else
arg1=$1
shift
${testScript} $arg1 "$@"
fi
echo "done running integration tests"
echo -e "\nExecution times:"
cat $STATS_FILE | sort --numeric-sort
rm $STATS_FILE
2022-08-11 22:27:21 +03:00
''