lib/system: move toLosslessStringMaybe into lib/tests
toLosslessStringMaybe is not used by anything other than lib/tests, so it can be private to that file. I don't think this function was terribly well thought-through. If people start using it, we will become permanently dependent on the ability to test platforms for equality. It also makes the elaboration process more fragile, because it encourages code outside of nixpkgs to become sensitive to the minute details of how elaboration happens.
This commit is contained in:
parent
66ee7de717
commit
00a749a3a6
2 changed files with 18 additions and 17 deletions
|
@ -27,21 +27,6 @@ rec {
|
|||
let removeFunctions = a: lib.filterAttrs (_: v: !builtins.isFunction v) a;
|
||||
in a: b: removeFunctions a == removeFunctions b;
|
||||
|
||||
/*
|
||||
Try to convert an elaborated system back to a simple string. If not possible,
|
||||
return null. So we have the property:
|
||||
|
||||
sys: _valid_ sys ->
|
||||
sys == elaborate (toLosslessStringMaybe sys)
|
||||
|
||||
NOTE: This property is not guaranteed when `sys` was elaborated by a different
|
||||
version of Nixpkgs.
|
||||
*/
|
||||
toLosslessStringMaybe = sys:
|
||||
if lib.isString sys then sys
|
||||
else if equals sys (elaborate sys.system) then sys.system
|
||||
else null;
|
||||
|
||||
/* List of all Nix system doubles the nixpkgs flake will expose the package set
|
||||
for. All systems listed here must be supported by nixpkgs as `localSystem`.
|
||||
|
||||
|
|
|
@ -9,6 +9,22 @@ let
|
|||
expr = lib.sort lib.lessThan x;
|
||||
expected = lib.sort lib.lessThan y;
|
||||
};
|
||||
|
||||
/*
|
||||
Try to convert an elaborated system back to a simple string. If not possible,
|
||||
return null. So we have the property:
|
||||
|
||||
sys: _valid_ sys ->
|
||||
sys == elaborate (toLosslessStringMaybe sys)
|
||||
|
||||
NOTE: This property is not guaranteed when `sys` was elaborated by a different
|
||||
version of Nixpkgs.
|
||||
*/
|
||||
toLosslessStringMaybe = sys:
|
||||
if lib.isString sys then sys
|
||||
else if lib.systems.equals sys (lib.systems.elaborate sys.system) then sys.system
|
||||
else null;
|
||||
|
||||
in
|
||||
lib.runTests (
|
||||
# We assert that the new algorithmic way of generating these lists matches the
|
||||
|
@ -55,11 +71,11 @@ lib.runTests (
|
|||
};
|
||||
|
||||
test_toLosslessStringMaybe_example_x86_64-linux = {
|
||||
expr = lib.systems.toLosslessStringMaybe (lib.systems.elaborate "x86_64-linux");
|
||||
expr = toLosslessStringMaybe (lib.systems.elaborate "x86_64-linux");
|
||||
expected = "x86_64-linux";
|
||||
};
|
||||
test_toLosslessStringMaybe_fail = {
|
||||
expr = lib.systems.toLosslessStringMaybe (lib.systems.elaborate "x86_64-linux" // { something = "extra"; });
|
||||
expr = toLosslessStringMaybe (lib.systems.elaborate "x86_64-linux" // { something = "extra"; });
|
||||
expected = null;
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue