* Test for runtime root finding.

This commit is contained in:
Eelco Dolstra 2006-07-21 12:46:54 +00:00
parent dcded7da47
commit 7adaa6d446
5 changed files with 64 additions and 5 deletions

View file

@ -13,11 +13,13 @@ fallback.sh: fallback.nix
gc-concurrent.sh: gc-concurrent.nix gc-concurrent2.nix gc-concurrent.sh: gc-concurrent.nix gc-concurrent2.nix
user-envs.sh: user-envs.nix user-envs.sh: user-envs.nix
fixed.sh: fixed.nix fixed.sh: fixed.nix
gc-runtime.sh: gc-runtime.nix
TESTS = init.sh hash.sh lang.sh add.sh simple.sh dependencies.sh \ TESTS = init.sh hash.sh lang.sh add.sh simple.sh dependencies.sh \
locking.sh parallel.sh build-hook.sh substitutes.sh substitutes2.sh \ locking.sh parallel.sh build-hook.sh substitutes.sh substitutes2.sh \
fallback.sh nix-push.sh gc.sh gc-concurrent.sh verify.sh nix-pull.sh \ fallback.sh nix-push.sh gc.sh gc-concurrent.sh verify.sh nix-pull.sh \
referrers.sh user-envs.sh logging.sh nix-build.sh misc.sh fixed.sh referrers.sh user-envs.sh logging.sh nix-build.sh misc.sh fixed.sh \
gc-runtime.sh
XFAIL_TESTS = XFAIL_TESTS =
@ -39,5 +41,6 @@ EXTRA_DIST = $(TESTS) \
fallback.nix.in \ fallback.nix.in \
user-envs.nix.in user-envs.builder.sh \ user-envs.nix.in user-envs.builder.sh \
fixed.nix.in fixed.builder1.sh fixed.builder2.sh \ fixed.nix.in fixed.builder1.sh fixed.builder2.sh \
gc-runtime.nix.in gc-runtime.builder.sh \
$(wildcard lang/*.nix) $(wildcard lang/*.exp) \ $(wildcard lang/*.nix) $(wildcard lang/*.exp) \
common.sh.in common.sh.in

View file

@ -1,10 +1,12 @@
set -e set -e
export TEST_ROOT=$(pwd)/test-tmp
export NIX_STORE_DIR
if ! NIX_STORE_DIR=$(readlink -f $TEST_ROOT/store); then
# Maybe the build directory is symlinked. # Maybe the build directory is symlinked.
export NIX_IGNORE_SYMLINK_STORE=1 export NIX_IGNORE_SYMLINK_STORE=1
NIX_STORE_DIR=$TEST_ROOT/store
export TEST_ROOT=$(pwd)/test-tmp fi
export NIX_STORE_DIR=$TEST_ROOT/store
export NIX_DATA_DIR=$TEST_ROOT/data export NIX_DATA_DIR=$TEST_ROOT/data
export NIX_LOCALSTATE_DIR=$TEST_ROOT/var export NIX_LOCALSTATE_DIR=$TEST_ROOT/var
export NIX_LOG_DIR=$TEST_ROOT/var/log/nix export NIX_LOG_DIR=$TEST_ROOT/var/log/nix

View file

@ -0,0 +1,8 @@
mkdir $out
cat > $out/program <<EOF
#! $SHELL
sleep 10000
EOF
chmod +x $out/program

7
tests/gc-runtime.nix.in Normal file
View file

@ -0,0 +1,7 @@
derivation {
name = "gc-runtime";
system = "@system@";
builder = "@shell@";
args = ["-e" "-x" ./gc-runtime.builder.sh];
PATH = "@coreutils@";
}

39
tests/gc-runtime.sh Normal file
View file

@ -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