aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2023-05-19 10:48:53 +0200
committerRobert Hensing <robert@roberthensing.nl>2023-06-30 18:22:43 +0200
commitea30f152b738fe65f216f3173d3a19adaaef5323 (patch)
treec591dab3ccfa7960275adeb3fe1ba9c1e2541730 /tests
parent7e5b6d2c4550a3007946271768e114531d7b89f0 (diff)
fetchClosure: Allow input addressed paths in pure mode
When explicitly requested by the caller, as suggested in the meeting (https://github.com/NixOS/nix/pull/8090#issuecomment-1531139324) > @edolstra: { toPath } vs { fromPath } is too implicit I've opted for the `inputAddressed = true` requirement, because it we did not agree on renaming the path attributes. > @roberth: more explicit > @edolstra: except for the direction; not immediately clear in which direction the rewriting happens This is in fact the most explicit syntax and a bit redundant, which is good, because that redundancy lets us deliver an error message that reminds expression authors that CA provides a better experience to their users.
Diffstat (limited to 'tests')
-rw-r--r--tests/fetchClosure.sh16
1 files changed, 14 insertions, 2 deletions
diff --git a/tests/fetchClosure.sh b/tests/fetchClosure.sh
index 21650eb06..4b8198e94 100644
--- a/tests/fetchClosure.sh
+++ b/tests/fetchClosure.sh
@@ -35,16 +35,28 @@ clearStore
if [[ "$NIX_REMOTE" != "daemon" ]]; then
- # In impure mode, we can use non-CA paths.
- [[ $(nix eval --raw --no-require-sigs --impure --expr "
+ # We can use non-CA paths when we ask explicitly.
+ [[ $(nix eval --raw --no-require-sigs --expr "
builtins.fetchClosure {
fromStore = \"file://$cacheDir\";
fromPath = $nonCaPath;
+ inputAddressed = true;
}
") = $nonCaPath ]]
[ -e $nonCaPath ]
+ # .. but only if we ask explicitly.
+ expectStderr 1 nix eval --raw --no-require-sigs --expr "
+ builtins.fetchClosure {
+ fromStore = \"file://$cacheDir\";
+ fromPath = $nonCaPath;
+ }
+ " | grepQuiet -E "The .fromPath. value .* is input addressed, but input addressing was not requested. If you do intend to return an input addressed store path, add .inputAddressed = true;. to the .fetchClosure. arguments."
+
+ [ -e $nonCaPath ]
+
+
fi
# 'toPath' set to empty string should fail but print the expected path.