summary refs log tree commit diff
path: root/nixos/lib/testing/driver.nix
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-04-25 08:48:47 +0000
committerAlyssa Ross <hi@alyssa.is>2023-04-25 08:55:30 +0000
commitd6e84a4574a200de63e8fe86ef8574b507fd366e (patch)
tree1b64390b06375630554d7c999d1a083387719c19 /nixos/lib/testing/driver.nix
parent6d69171610869050b8c1daa07ec2446a5c897c19 (diff)
downloadnixpkgs-d6e84a4574a200de63e8fe86ef8574b507fd366e.tar
nixpkgs-d6e84a4574a200de63e8fe86ef8574b507fd366e.tar.gz
nixpkgs-d6e84a4574a200de63e8fe86ef8574b507fd366e.tar.bz2
nixpkgs-d6e84a4574a200de63e8fe86ef8574b507fd366e.tar.lz
nixpkgs-d6e84a4574a200de63e8fe86ef8574b507fd366e.tar.xz
nixpkgs-d6e84a4574a200de63e8fe86ef8574b507fd366e.tar.zst
nixpkgs-d6e84a4574a200de63e8fe86ef8574b507fd366e.zip
nixosTest: remove hostname limitations
Diffstat (limited to 'nixos/lib/testing/driver.nix')
-rw-r--r--nixos/lib/testing/driver.nix31
1 files changed, 11 insertions, 20 deletions
diff --git a/nixos/lib/testing/driver.nix b/nixos/lib/testing/driver.nix
index fb181c1d7e9..25759a91dda 100644
--- a/nixos/lib/testing/driver.nix
+++ b/nixos/lib/testing/driver.nix
@@ -21,29 +21,20 @@ let
     in
     nodesList ++ lib.optional (lib.length nodesList == 1 && !lib.elem "machine" nodesList) "machine";
 
-  # TODO: This is an implementation error and needs fixing
-  # the testing famework cannot legitimately restrict hostnames further
-  # beyond RFC1035
-  invalidNodeNames = lib.filter
-    (node: builtins.match "^[A-z_]([A-z0-9_]+)?$" node == null)
-    nodeHostNames;
+  pythonizeName = name:
+    let
+      head = lib.substring 0 1 name;
+      tail = lib.substring 1 (-1) name;
+    in
+      (if builtins.match "[A-z_]" head == null then "_" else head) +
+      lib.stringAsChars (c: if builtins.match "[A-z0-9_]" c == null then "_" else c) tail;
 
   uniqueVlans = lib.unique (builtins.concatLists vlans);
   vlanNames = map (i: "vlan${toString i}: VLan;") uniqueVlans;
-  machineNames = map (name: "${name}: Machine;") nodeHostNames;
+  pythonizedNames = map pythonizeName nodeHostNames;
+  machineNames = map (name: "${name}: Machine;") pythonizedNames;
 
-  withChecks =
-    if lib.length invalidNodeNames > 0 then
-      throw ''
-        Cannot create machines out of (${lib.concatStringsSep ", " invalidNodeNames})!
-        All machines are referenced as python variables in the testing framework which will break the
-        script when special characters are used.
-
-        This is an IMPLEMENTATION ERROR and needs to be fixed. Meanwhile,
-        please stick to alphanumeric chars and underscores as separation.
-      ''
-    else
-      lib.warnIf config.skipLint "Linting is disabled";
+  withChecks = lib.warnIf config.skipLint "Linting is disabled";
 
   driver =
     hostPkgs.runCommand "nixos-test-driver-${config.name}"
@@ -87,7 +78,7 @@ let
         ${testDriver}/bin/generate-driver-symbols
         ${lib.optionalString (!config.skipLint) ''
           PYFLAKES_BUILTINS="$(
-            echo -n ${lib.escapeShellArg (lib.concatStringsSep "," nodeHostNames)},
+            echo -n ${lib.escapeShellArg (lib.concatStringsSep "," pythonizedNames)},
             < ${lib.escapeShellArg "driver-symbols"}
           )" ${hostPkgs.python3Packages.pyflakes}/bin/pyflakes $out/test-script
         ''}