The Nix expression here is really hard to read with multiple (and unnecessarily) nested lets and it also generates attribute names based on the derivation generated by makeTest, which will result in these attribute names: * vm-test-run-predictableInterfaceNames * vm-test-run-predictableInterfaceNames-with-networkd * vm-test-run-unpredictableInterfaceNames * vm-test-run-unpredictableInterfaceNames-with-networkd With the refactor the attribute names are now: * predictable * predictableNetworkd * unpredictable * unpredictableNetworkd So now the code is even shorter and IMHO slightly more readable. Signed-off-by: aszlig <aszlig@nix.build> Cc: @symphorien, @fpletz, @adisbladis
25 lines
959 B
Nix
25 lines
959 B
Nix
{ system ? builtins.currentSystem }:
|
|
|
|
let
|
|
inherit (import ../lib/testing.nix { inherit system; }) makeTest pkgs;
|
|
in pkgs.lib.listToAttrs (pkgs.lib.crossLists (predictable: withNetworkd: {
|
|
name = pkgs.lib.optionalString (!predictable) "un" + "predictable"
|
|
+ pkgs.lib.optionalString withNetworkd "Networkd";
|
|
value = makeTest {
|
|
name = "${if predictable then "" else "un"}predictableInterfaceNames${if withNetworkd then "-with-networkd" else ""}";
|
|
meta = {};
|
|
|
|
machine = { config, lib, ... }: {
|
|
networking.usePredictableInterfaceNames = lib.mkForce predictable;
|
|
networking.useNetworkd = withNetworkd;
|
|
networking.dhcpcd.enable = !withNetworkd;
|
|
};
|
|
|
|
testScript = ''
|
|
print $machine->succeed("ip link");
|
|
$machine->succeed("ip link show ${if predictable then "ens3" else "eth0"}");
|
|
$machine->fail("ip link show ${if predictable then "eth0" else "ens3"}");
|
|
'';
|
|
};
|
|
}) [[true false] [true false]])
|