From 4af9966c73666ed77a7a4c0dc498bfba1e853070 Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Thu, 11 Jun 2020 13:33:18 -0700 Subject: [PATCH] Tests use a private /nix/store This allows the tests to run inside a nix build. Otherwise, it fails with error: creating directory '/nix/var': Permission denied Bonus: This avoids polluting the real store with test artifacts. See also https://github.com/NixOS/nix/issues/13 --- tests/alias.sh | 2 +- tests/core.sh | 2 +- tests/lib/test-setup.sh | 7 +++++++ tests/multi-update.sh | 2 +- tests/pin-twice.sh | 2 +- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/tests/alias.sh b/tests/alias.sh index 368fc1e..928ceab 100755 --- a/tests/alias.sh +++ b/tests/alias.sh @@ -13,7 +13,7 @@ python3 ./pinch.py pin "$conf" actual_env_command=`python3 ./pinch.py update --dry-run "$conf"` -expected_env_command_RE='^nix-env --profile /nix/var/nix/profiles/per-user/[^/]+/channels --show-trace --file '\'''\'' --install --from-expression '\''f: f \{ name = "(repo-[0-9]{10}-[0-9a-f]{11})"; channelName = "bar"; src = builtins.storePath "/nix/store/.{32}-\1.tar.xz"; \}'\'' '\''f: f \{ name = "\1"; channelName = "foo"; src = builtins.storePath "/nix/store/.{32}-\1.tar.xz"; \}'\''$' +expected_env_command_RE='^nix-env --profile /nix/var/nix/profiles/per-user/[^/]+/channels --show-trace --file '\'''\'' --install --from-expression '\''f: f \{ name = "(repo-[0-9]{10}-[0-9a-f]{11})"; channelName = "bar"; src = builtins.storePath "'"$NIX_STORE_DIR"'/.{32}-\1.tar.xz"; \}'\'' '\''f: f \{ name = "\1"; channelName = "foo"; src = builtins.storePath "'"$NIX_STORE_DIR"'/.{32}-\1.tar.xz"; \}'\''$' if echo "$actual_env_command" | egrep "$expected_env_command_RE" > /dev/null;then echo PASS diff --git a/tests/core.sh b/tests/core.sh index 5ef652e..5d11707 100755 --- a/tests/core.sh +++ b/tests/core.sh @@ -8,7 +8,7 @@ python3 ./pinch.py pin "$conf" actual_env_command=`python3 ./pinch.py update --dry-run "$conf"` -expected_env_command_RE='^nix-env --profile /nix/var/nix/profiles/per-user/[^/]+/channels --show-trace --file '\'''\'' --install --from-expression '\''f: f \{ name = "(repo-[0-9]{10}-[0-9a-f]{11})"; channelName = "foo"; src = builtins.storePath "/nix/store/.{32}-\1.tar.xz"; \}'\''$' +expected_env_command_RE='^nix-env --profile /nix/var/nix/profiles/per-user/[^/]+/channels --show-trace --file '\'''\'' --install --from-expression '\''f: f \{ name = "(repo-[0-9]{10}-[0-9a-f]{11})"; channelName = "foo"; src = builtins.storePath "'"$NIX_STORE_DIR"'/.{32}-\1.tar.xz"; \}'\''$' if echo "$actual_env_command" | egrep "$expected_env_command_RE" > /dev/null;then echo PASS diff --git a/tests/lib/test-setup.sh b/tests/lib/test-setup.sh index 35a4e73..66d13eb 100644 --- a/tests/lib/test-setup.sh +++ b/tests/lib/test-setup.sh @@ -8,6 +8,11 @@ export GIT_COMMITTER_EMAIL=auto@mati.on cache_dir=$(mktemp -d) export XDG_CACHE_HOME=$cache_dir +nix_store=$(mktemp -d) +nix_state=$(mktemp -d) +export NIX_STORE_DIR=$nix_store +export NIX_STATE_DIR=$nix_state + foo_setup() { repo_dir="`mktemp -d`" @@ -33,6 +38,8 @@ test_cleanup() { if [ "$repo_dir" ];then rm -rf "$repo_dir"; fi if [ "$conf" ];then rm "$conf"; fi if [ "$cache_dir" ];then rm -rf "$cache_dir"; fi + if [ "$nix_store" ];then rm -rf "$nix_store"; fi + if [ "$nix_state" ];then rm -rf "$nix_state"; fi } trap test_cleanup EXIT INT TERM diff --git a/tests/multi-update.sh b/tests/multi-update.sh index 74899ff..cd6e90b 100755 --- a/tests/multi-update.sh +++ b/tests/multi-update.sh @@ -17,7 +17,7 @@ actual_env_command=`python3 ./pinch.py update --dry-run "$conf" "$conf2"` rm -rf "$conf2" -expected_env_command_RE='^nix-env --profile /nix/var/nix/profiles/per-user/[^/]+/channels --show-trace --file '\'''\'' --install --from-expression '\''f: f \{ name = "(repo-[0-9]{10}-[0-9a-f]{11})"; channelName = "bar"; src = builtins.storePath "/nix/store/.{32}-\1.tar.xz"; \}'\'' '\''f: f \{ name = "\1"; channelName = "foo"; src = builtins.storePath "/nix/store/.{32}-\1.tar.xz"; \}'\''$' +expected_env_command_RE='^nix-env --profile /nix/var/nix/profiles/per-user/[^/]+/channels --show-trace --file '\'''\'' --install --from-expression '\''f: f \{ name = "(repo-[0-9]{10}-[0-9a-f]{11})"; channelName = "bar"; src = builtins.storePath "'"$NIX_STORE_DIR"'/.{32}-\1.tar.xz"; \}'\'' '\''f: f \{ name = "\1"; channelName = "foo"; src = builtins.storePath "'"$NIX_STORE_DIR"'/.{32}-\1.tar.xz"; \}'\''$' if echo "$actual_env_command" | egrep "$expected_env_command_RE" > /dev/null;then echo PASS diff --git a/tests/pin-twice.sh b/tests/pin-twice.sh index dec02f0..ee50174 100755 --- a/tests/pin-twice.sh +++ b/tests/pin-twice.sh @@ -17,7 +17,7 @@ python3 ./pinch.py pin "$conf" actual_env_command=`python3 ./pinch.py update --dry-run "$conf"` -expected_env_command_RE='^nix-env --profile /nix/var/nix/profiles/per-user/[^/]+/channels --show-trace --file '\'''\'' --install --from-expression '\''f: f \{ name = "(repo-[0-9]{10}-[0-9a-f]{11})"; channelName = "foo"; src = builtins.storePath "/nix/store/.{32}-\1.tar.xz"; \}'\''$' +expected_env_command_RE='^nix-env --profile /nix/var/nix/profiles/per-user/[^/]+/channels --show-trace --file '\'''\'' --install --from-expression '\''f: f \{ name = "(repo-[0-9]{10}-[0-9a-f]{11})"; channelName = "foo"; src = builtins.storePath "'"$NIX_STORE_DIR"'/.{32}-\1.tar.xz"; \}'\''$' if echo "$actual_env_command" | egrep "$expected_env_command_RE" > /dev/null;then echo PASS -- 2.44.1