[Backport release-26.05] tests.overriding: attach fetchgit tests (#530233)

This commit is contained in:
Yueh-Shun Li
2026-07-09 18:19:01 +00:00
committed by GitHub

View File

@@ -8,6 +8,7 @@ let
tests =
tests-stdenv
// test-extendMkDerivation
// tests-fetchgit
// tests-fetchhg
// tests-fetchurl
// tests-go
@@ -147,11 +148,41 @@ let
};
};
/**
Take two positional arguments `fakeHash` and `partialHash`,
and return a modified version of fakeHash whose hash body is partially substituted by `partialHash` from the beginning,
used to assert a specific fake hash variant is used by an overridden FOD.
# Inputs
`fakeHash`
: The specified zero fake hash
`partialHash`
: A trimmed non-zero hash body, to substitute the beginning of the zero hash body.
*/
genNonzeroFakeHash =
fakeHash:
let
isSRIHash = lib.hasInfix "-" fakeHash;
defaultHashAlgo = lib.optionalString isSRIHash lib.head (lib.splitString "-" lib.fakeHash);
defaultHashPrefix = lib.optionalString isSRIHash (defaultHashAlgo + "-");
defaultHashBody = lib.removePrefix defaultHashPrefix fakeHash;
in
partialHash:
defaultHashPrefix
+ partialHash
+ (lib.substring (lib.stringLength partialHash) (lib.stringLength defaultHashBody) defaultHashBody);
tests-fetchgit =
let
fakeSha256-1 = genNonzeroFakeHash lib.fakeSha256 "1";
fakeHash-2 = genNonzeroFakeHash lib.fakeHash "B";
src-with-sha256 = pkgs.fetchgit {
url = "https://example.com/source.git";
sha256 = lib.fakeSha256;
sha256 = fakeSha256-1;
};
in
{
@@ -163,19 +194,19 @@ let
;
};
expected = {
outputHash = lib.fakeSha256;
outputHash = fakeSha256-1;
outputHashAlgo = "sha256";
};
};
test-fetchgit-overrideAttrs-hash = {
expr = {
inherit (src-with-sha256.overrideAttrs { hash = pkgs.nix.src.hash; })
inherit (src-with-sha256.overrideAttrs { hash = fakeHash-2; })
outputHash
outputHashAlgo
;
};
expected = {
outputHash = pkgs.nix.src.hash;
outputHash = fakeHash-2;
outputHashAlgo = null;
};
};
@@ -195,9 +226,11 @@ let
tests-fetchurl =
let
fakeSha256-1 = genNonzeroFakeHash lib.fakeSha256 "1";
fakeHash-2 = genNonzeroFakeHash lib.fakeHash "B";
src-with-sha256 = pkgs.fetchurl {
url = "https://example.com/source.tar.gz";
sha256 = lib.fakeSha256;
sha256 = fakeSha256-1;
};
in
{
@@ -209,19 +242,19 @@ let
;
};
expected = {
outputHash = lib.fakeSha256;
outputHash = fakeSha256-1;
outputHashAlgo = "sha256";
};
};
test-fetchurl-overrideAttrs-hash = {
expr = {
inherit (src-with-sha256.overrideAttrs { hash = pkgs.hello.src.hash; })
inherit (src-with-sha256.overrideAttrs { hash = fakeHash-2; })
outputHash
outputHashAlgo
;
};
expected = {
outputHash = pkgs.hello.src.hash;
outputHash = fakeHash-2;
outputHashAlgo = null;
};
};