aboutsummaryrefslogtreecommitdiff
path: root/tests/functional
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functional')
-rw-r--r--tests/functional/meson.build1
-rw-r--r--tests/functional/nix-collect-garbage-dry-run.sh40
2 files changed, 41 insertions, 0 deletions
diff --git a/tests/functional/meson.build b/tests/functional/meson.build
index eede1834c..cbf6a1563 100644
--- a/tests/functional/meson.build
+++ b/tests/functional/meson.build
@@ -73,6 +73,7 @@ functional_tests_scripts = [
'flakes/flake-in-submodule.sh',
'gc.sh',
'nix-collect-garbage-d.sh',
+ 'nix-collect-garbage-dry-run.sh',
'remote-store.sh',
'legacy-ssh-store.sh',
'lang.sh',
diff --git a/tests/functional/nix-collect-garbage-dry-run.sh b/tests/functional/nix-collect-garbage-dry-run.sh
new file mode 100644
index 000000000..00e6f4885
--- /dev/null
+++ b/tests/functional/nix-collect-garbage-dry-run.sh
@@ -0,0 +1,40 @@
+source common.sh
+
+clearStore
+
+## Test `nix-collect-garbage --dry-run`
+
+
+testCollectGarbageDryRun () {
+ clearProfiles
+ # Install then uninstall a package
+ # This should leave packages ready to be garbage collected.
+ nix-env -f ./user-envs.nix -i foo-1.0
+ nix-env -f ./user-envs.nix -e foo-1.0
+
+
+ nix-env --delete-generations old
+ [[ $(nix-store --gc --print-dead | wc -l) -eq 7 ]]
+
+ nix-collect-garbage --dry-run
+ [[ $(nix-store --gc --print-dead | wc -l) -eq 7 ]]
+
+}
+
+testCollectGarbageDryRun
+
+# Run the same test, but forcing the profiles an arbitrary location.
+rm ~/.nix-profile
+ln -s $TEST_ROOT/blah ~/.nix-profile
+testCollectGarbageDryRun
+
+# Run the same test, but forcing the profiles at their legacy location under
+# /nix/var/nix.
+#
+# Note that we *don't* use the default profile; `nix-collect-garbage` will
+# need to check the legacy conditional unconditionally not just follow
+# `~/.nix-profile` to pass this test.
+#
+# Regression test for #8294
+rm ~/.nix-profile
+testCollectGarbageDryRun --profile "$NIX_STATE_DIR/profiles/per-user/me"