lib/path: allow CA paths in hasStorePathPrefix (#386774)

This commit is contained in:
Robert Hensing
2025-03-12 19:32:12 +00:00
committed by GitHub
2 changed files with 17 additions and 1 deletions
+7 -1
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.
+10
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;