diff options
Diffstat (limited to 'tests/gc-runtime.sh')
-rw-r--r-- | tests/gc-runtime.sh | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/gc-runtime.sh b/tests/gc-runtime.sh new file mode 100644 index 000000000000..5a6e0da8cda2 --- /dev/null +++ b/tests/gc-runtime.sh @@ -0,0 +1,39 @@ +source common.sh + +case $system in + *linux*) + ;; + *) + exit 0; +esac + +set -m # enable job control, needed for kill + +profiles="$NIX_STATE_DIR"/profiles +rm -f $profiles/* + +$nixenv -p $profiles/test -f ./gc-runtime.nix -i gc-runtime + +outPath=$($nixenv -p $profiles/test -q --no-name --out-path gc-runtime) +echo $outPath + +echo "backgrounding program..." +$profiles/test/program & +child=$! +echo PID=$child + +$nixenv -p $profiles/test -e gc-runtime +$nixenv -p $profiles/test --delete-generations old + +cp $TOP/scripts/find-runtime-roots.pl $TEST_ROOT/foo.pl +chmod +x $TEST_ROOT/foo.pl +NIX_ROOT_FINDER=$TEST_ROOT/foo.pl $nixstore --gc + +kill -- -$child + +if ! test -e $outPath; then + echo "running program was garbage collected!" + exit 1 +fi + +exit 0 |