lib/path: allow CA paths in hasStorePathPrefix

This commit is contained in:
Mikael Voss 2025-03-03 17:19:00 +01:00
parent 0974a837a2
commit 6e2e984af0
No known key found for this signature in database
2 changed files with 17 additions and 1 deletions

View file

@ -159,7 +159,13 @@ let
# but this is not fully specified, so let's tie this too much to the currently implemented concept of store paths.
# Similar reasoning applies to the validity of the name part.
# We care more about discerning store path-ness on realistic values. Making it airtight would be fragile and slow.
&& match ".{32}-.+" (elemAt components storeDirLength) != null;
&& match ".{32}-.+" (elemAt components storeDirLength) != null
# alternatively match contentaddressed derivations, which _currently_ do
# not have a store directory prefix.
# This is a workaround for https://github.com/NixOS/nix/issues/12361 which
# was needed during the experimental phase of ca-derivations and should be
# removed once the issue has been resolved.
|| match "[0-9a-z]{52}" (head components) != null;
in
# No rec! Add dependencies on this file at the top.

View file

@ -137,6 +137,16 @@ let
expected = true;
};
# Test paths for contentaddressed derivations
testHasStorePathPrefixExample7 = {
expr = hasStorePathPrefix (/. + "/1121rp0gvr1qya7hvy925g5kjwg66acz6sn1ra1hca09f1z5dsab");
expected = true;
};
testHasStorePathPrefixExample8 = {
expr = hasStorePathPrefix (/. + "/1121rp0gvr1qya7hvy925g5kjwg66acz6sn1ra1hca09f1z5dsab/foo/bar");
expected = true;
};
# Test examples from the lib.path.subpath.isValid documentation
testSubpathIsValidExample1 = {
expr = subpath.isValid null;