diff --git a/tests/Makefile.am b/tests/Makefile.am index 92c0a83697..f58dfa4860 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -33,10 +33,11 @@ substitutes2.sh: substitutes2.nix fallback.sh: fallback.nix nix-push.sh: dependencies.nix nix-pull.sh: dependencies.nix +gc.sh: dependencies.nix TESTS = init.sh hash.sh lang.sh simple.sh dependencies.sh locking.sh parallel.sh \ - build-hook.sh substitutes.sh substitutes2.sh fallback.sh nix-push.sh verify.sh \ - nix-pull.sh + build-hook.sh substitutes.sh substitutes2.sh fallback.sh nix-push.sh gc.sh \ + verify.sh nix-pull.sh XFAIL_TESTS = @@ -51,5 +52,7 @@ EXTRA_DIST = $(TESTS) \ locking.nix.in locking.builder.sh \ parallel.nix.in parallel.builder.sh \ build-hook.nix.in build-hook.hook.sh \ - substitutes.nix.in substitutes2.nix.in fallback.nix.in \ + substitutes.nix.in substituter.sh \ + substitutes2.nix.in substituter2.sh \ + fallback.nix.in \ $(wildcard lang/*.nix) $(wildcard lang/*.exp) diff --git a/tests/gc.sh b/tests/gc.sh new file mode 100644 index 0000000000..9aeda43e71 --- /dev/null +++ b/tests/gc.sh @@ -0,0 +1,14 @@ +storeExpr=$($TOP/src/nix-instantiate/nix-instantiate dependencies.nix) +outPath=$($TOP/src/nix-store/nix-store -rvv "$storeExpr") + +# Set a GC root. +ln -s $outPath "$NIX_LOCALSTATE_DIR"/nix/gcroots/foo + +$NIX_BIN_DIR/nix-collect-garbage + +# Check that the root and its dependencies haven't been deleted. +cat $outPath/foobar +cat $outPath/input-2/bar + +# Check that the derivation has been GC'd. +if cat $storeExpr > /dev/null; then false; fi diff --git a/tests/init.sh b/tests/init.sh index 504cb14f12..fa3092f9ae 100644 --- a/tests/init.sh +++ b/tests/init.sh @@ -18,11 +18,13 @@ ln -s $TOP/src/nix-store/nix-store $NIX_BIN_DIR/ ln -s $TOP/src/nix-instantiate/nix-instantiate $NIX_BIN_DIR/ ln -s $TOP/src/nix-hash/nix-hash $NIX_BIN_DIR/ ln -s $TOP/scripts/nix-prefetch-url $NIX_BIN_DIR/ +ln -s $TOP/scripts/nix-collect-garbage $NIX_BIN_DIR/ mkdir $NIX_BIN_DIR/nix ln -s $TOP/scripts/download-using-manifests.pl $NIX_BIN_DIR/nix/ ln -s $TOP/scripts/readmanifest.pm $NIX_BIN_DIR/nix/ mkdir -p "$NIX_LOCALSTATE_DIR"/nix/manifests +mkdir -p "$NIX_LOCALSTATE_DIR"/nix/gcroots mkdir -p "$NIX_LOCALSTATE_DIR"/log/nix mkdir $NIX_DATA_DIR/nix @@ -31,6 +33,7 @@ cp -prd $TOP/corepkgs $NIX_DATA_DIR/nix/ for i in $NIX_DATA_DIR/nix/corepkgs/nar/nar.sh \ $NIX_BIN_DIR/nix/download-using-manifests.pl \ $NIX_BIN_DIR/nix-prefetch-url \ + $NIX_BIN_DIR/nix-collect-garbage \ ; do echo "$REAL_BIN_DIR" sed < $i > $i.tmp \ diff --git a/tests/substituter2.sh b/tests/substituter2.sh index 84925b9440..c4e1bfec7b 100755 --- a/tests/substituter2.sh +++ b/tests/substituter2.sh @@ -1,18 +1,3 @@ -# Set a PATH (!!! impure). -export PATH=/bin:/usr/bin:$PATH - -mkdir $out - -cat > $out/substituter <