dream2nix/tests/examples/default.nix

74 lines
1.7 KiB
Nix
Raw Normal View History

2022-03-27 18:11:32 +03:00
{
self,
lib,
2022-04-23 16:09:55 +03:00
async,
bash,
2022-03-27 18:11:32 +03:00
coreutils,
2022-03-28 19:41:33 +03:00
git,
2022-08-31 12:51:32 +03:00
gnugrep,
jq,
parallel,
2022-03-27 18:11:32 +03:00
nix,
2022-08-31 12:51:32 +03:00
pkgs,
2022-11-16 03:53:40 +03:00
framework,
2022-03-27 18:11:32 +03:00
...
}: let
l = lib // builtins;
examples = ../../examples;
testScript =
2022-11-16 03:53:40 +03:00
framework.utils.writePureShellScript
[
async
bash
coreutils
git
2022-08-31 12:51:32 +03:00
gnugrep
jq
nix
]
''
cd $TMPDIR
dir=$1
shift
2022-05-18 21:45:26 +03:00
echo -e "\ntesting example for $dir"
start_time=$(date +%s)
cp -r ${examples}/$dir/* .
chmod -R +w .
nix flake lock --override-input dream2nix ${../../.}
2022-08-31 12:51:32 +03:00
if nix flake show | grep -q resolveImpure; then
nix run .#resolveImpure --show-trace
fi
# disable --read-only check for these because they do IFD so they will
# write to store at eval time
evalBlockList=("haskell_cabal-plan" "haskell_stack-lock")
2022-08-31 12:51:32 +03:00
if [[ ! ((''${evalBlockList[*]} =~ "$dir")) ]] \
&& [ "$(nix flake show --json | jq 'select(.packages."x86_64-linux".default.name)')" != "" ]; then
nix eval --read-only --no-allow-import-from-derivation .#default.name
fi
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-03-27 18:11:32 +03:00
in
2022-11-16 03:53:40 +03:00
framework.utils.writePureShellScript
2022-03-27 18:11:32 +03:00
[
coreutils
parallel
2022-03-27 18:11:32 +03:00
]
''
export STATS_FILE=$(mktemp)
2022-04-17 15:42:48 +03:00
if [ -z ''${1+x} ]; then
JOBS=''${JOBS:-$(nproc)}
parallel --halt now,fail=1 -j$JOBS -a <(ls ${examples}) ${testScript}
2022-04-17 15:42:48 +03:00
else
arg1=$1
shift
${testScript} $arg1 "$@"
fi
echo -e "\nExecution times:"
cat $STATS_FILE | sort --numeric-sort
rm $STATS_FILE
2022-03-27 18:11:32 +03:00
''