Unverified Commit 877ebad7 authored by Robert Hensing's avatar Robert Hensing Committed by GitHub
Browse files

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

parents 28c0f461 6e2e984a
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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 content‐addressed 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 −0
Original line number Diff line number Diff line
@@ -137,6 +137,16 @@ let
      expected = true;
    };

    # Test paths for content‐addressed 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;