about summary refs log tree commit diff
path: root/tests/gc-runtime.sh
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2006-07-21T12·46+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2006-07-21T12·46+0000
commit7adaa6d4466063893c9ac6b5b7d71c423be34b69 (patch)
tree144e3b4f6e9c070d56e45c218e27c5a9e0cc8f57 /tests/gc-runtime.sh
parentdcded7da4704ae66ebbb4343597868a7eb992aa7 (diff)
* Test for runtime root finding.
Diffstat (limited to 'tests/gc-runtime.sh')
-rw-r--r--tests/gc-runtime.sh39
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