check-meta-test.nix: add tests for compound licenses

This commit is contained in:
Tom Hunze
2026-04-20 02:34:35 +02:00
parent b49255b865
commit 21a2bb22e4
+89 -66
View File
@@ -22,14 +22,17 @@ let
assertMsg
generators
licenses
nameValuePair
recurseIntoAttrs
replaceString
;
mkUnfreePkg = name: {
mkPkg = name: license: {
pname = name;
version = "1.0";
meta.license = licenses.unfree;
meta.license = license;
};
assertValidity =
{
nixpkgsConfig,
@@ -52,77 +55,97 @@ let
toPretty = generators.toPretty { };
in
assertMsg (actual.success == expected) ''
Expected validity of package ${lib.getName pkg} to be ${toPretty expected},
but got ${toPretty actual} with config:
Expected validity of package '${lib.getName pkg}' with unfree license
'${licenses.toSPDX pkg.meta.license}' to be ${toPretty expected}, but got
${toPretty actual}
with config:
${toPretty nixpkgsConfig}
'';
runAssertions = assertions: lib.deepSeq assertions "";
in
recurseIntoAttrs {
allowOnlyFreePackagesByDefault = assertValidity {
nixpkgsConfig = { };
pkg = mkUnfreePkg "forbidden";
expected = false;
};
allowAllUnfreePackages = assertValidity {
nixpkgsConfig = {
allowUnfree = true;
mkTests = mkUnfreePkg: {
allowOnlyFreePackagesByDefault = assertValidity {
nixpkgsConfig = { };
pkg = mkUnfreePkg "forbidden";
expected = false;
};
pkg = mkUnfreePkg "allowed";
allowAllUnfreePackages = assertValidity {
nixpkgsConfig = {
allowUnfree = true;
};
pkg = mkUnfreePkg "allowed";
};
allowUnfreePackagesWithPredicate =
let
nixpkgsConfig = {
allowUnfreePredicate = pkg: lib.getName pkg == "allowed-by-predicate";
};
in
[
(assertValidity {
inherit nixpkgsConfig;
pkg = mkUnfreePkg "allowed-by-predicate";
})
(assertValidity {
inherit nixpkgsConfig;
pkg = mkUnfreePkg "allowed-by-nothing";
expected = false;
})
];
allowUnfreeWithPackages = runAssertions [
(assertValidity {
nixpkgsConfig = {
allowUnfreePackages = [ "unfree" ];
};
pkg = mkUnfreePkg "unfree";
expected = true;
})
];
allowUnfreePackagesOrPredicate =
let
nixpkgsConfig = {
allowUnfreePackages = [ "allowed-by-packages" ];
allowUnfreePredicate = pkg: lib.getName pkg == "allowed-by-predicate";
};
in
runAssertions [
(assertValidity {
inherit nixpkgsConfig;
pkg = mkUnfreePkg "allowed-by-packages";
})
(assertValidity {
inherit nixpkgsConfig;
pkg = mkUnfreePkg "allowed-by-predicate";
})
(assertValidity {
inherit nixpkgsConfig;
pkg = mkUnfreePkg "forbidden";
expected = false;
})
];
};
allowUnfreePackagesWithPredicate =
let
nixpkgsConfig = {
allowUnfreePredicate = pkg: lib.getName pkg == "allowed-by-predicate";
};
in
[
(assertValidity {
inherit nixpkgsConfig;
pkg = mkUnfreePkg "allowed-by-predicate";
})
(assertValidity {
inherit nixpkgsConfig;
pkg = mkUnfreePkg "allowed-by-nothing";
expected = false;
})
];
allowUnfreeWithPackages = runAssertions [
(assertValidity {
nixpkgsConfig = {
allowUnfreePackages = [ "unfree" ];
};
pkg = mkUnfreePkg "unfree";
expected = true;
})
unfreeLicenses = [
licenses.unfree
(licenses.AND [
licenses.free
licenses.unfree
])
];
in
allowUnfreePackagesOrPredicate =
let
nixpkgsConfig = {
allowUnfreePackages = [ "allowed-by-packages" ];
allowUnfreePredicate = pkg: lib.getName pkg == "allowed-by-predicate";
};
in
runAssertions [
(assertValidity {
inherit nixpkgsConfig;
pkg = mkUnfreePkg "allowed-by-packages";
})
(assertValidity {
inherit nixpkgsConfig;
pkg = mkUnfreePkg "allowed-by-predicate";
})
(assertValidity {
inherit nixpkgsConfig;
pkg = mkUnfreePkg "forbidden";
expected = false;
})
];
}
recurseIntoAttrs (
builtins.listToAttrs (
map (
license:
nameValuePair (replaceString " " "-" (licenses.toSPDX license)) (
recurseIntoAttrs (mkTests (name: mkPkg name license))
)
) unfreeLicenses
)
)