From 8353ebe073efeecf31f3a67456f3bebbbdedd639 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Mon, 22 Jan 2018 23:19:06 +0200 Subject: nixos/release.nix: Introduce callSubTestsOnTheseSystems The existing callSubTests seems to already have special-cased code to allow enabling subtests on a single specific system by looking at the `system` attribute in the test arguments. Replace it with a new version similar to the callTestOnTheseSystems because: - It's consistent with the existing functions for creating system-specific tests (though admittedly, the callSubTests special case for `system` predates them) - This approach allows limiting to multiple system types, the previous one inherently allows only one system type. - This also fixes the problem that if you pass in e.g. supportedSystems = [ "aarch64-linux" ], you end up with a tests.chromium job that silently runs on x86_64-linux. - Finally, this causes renames of the jobs like: tests.chromium -> tests.chromium.x86_64-linux to be consistent with the rest of the tests. --- nixos/release-combined.nix | 2 +- nixos/release.nix | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/nixos/release-combined.nix b/nixos/release-combined.nix index 6583b13b844e7..3564e6298256f 100644 --- a/nixos/release-combined.nix +++ b/nixos/release-combined.nix @@ -57,7 +57,7 @@ in rec { nixos.ova.x86_64-linux #(all nixos.tests.containers) - nixos.tests.chromium + nixos.tests.chromium.x86_64-linux (all nixos.tests.firefox) (all nixos.tests.firewall) (all nixos.tests.gnome3) diff --git a/nixos/release.nix b/nixos/release.nix index 846d87b18d6a6..b8a87b3acf442 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -19,7 +19,8 @@ let callTestOnTheseSystems = systems: fn: args: forTheseSystems systems (system: hydraJob (importTest fn args system)); callTest = callTestOnTheseSystems supportedSystems; - callSubTests = fn: args: let + callSubTests = callSubTestsOnTheseSystems supportedSystems; + callSubTestsOnTheseSystems = systems: fn: args: let discover = attrs: let subTests = filterAttrs (const (hasAttr "test")) attrs; in mapAttrs (const (t: hydraJob t.test)) subTests; @@ -28,10 +29,7 @@ let ${system} = test; }) (discover (importTest fn args system)); - # If the test is only for a particular system, use only the specified - # system instead of generating attributes for all available systems. - in if args ? system then discover (import fn args) - else foldAttrs mergeAttrs {} (map discoverForSystem supportedSystems); + in foldAttrs mergeAttrs {} (map discoverForSystem (intersectLists systems supportedSystems)); pkgs = import nixpkgs { system = "x86_64-linux"; }; @@ -230,7 +228,7 @@ in rec { tests.boot = callSubTests tests/boot.nix {}; tests.boot-stage1 = callTest tests/boot-stage1.nix {}; tests.cadvisor = callTestOnTheseSystems ["x86_64-linux"] tests/cadvisor.nix {}; - tests.chromium = (callSubTests tests/chromium.nix { system = "x86_64-linux"; }).stable; + tests.chromium = (callSubTestsOnTheseSystems ["x86_64-linux"] tests/chromium.nix {}).stable; tests.cjdns = callTest tests/cjdns.nix {}; tests.cloud-init = callTest tests/cloud-init.nix {}; tests.containers-ipv4 = callTest tests/containers-ipv4.nix {}; @@ -252,7 +250,7 @@ in rec { tests.etcd = callTestOnTheseSystems ["x86_64-linux"] tests/etcd.nix {}; tests.ec2-nixops = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-nixops; tests.ec2-config = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-config; - tests.elk = callSubTests tests/elk.nix { system = "x86_64-linux"; }; + tests.elk = callSubTestsOnTheseSystems ["x86_64-linux"] tests/elk.nix {}; tests.env = callTest tests/env.nix {}; tests.ferm = callTest tests/ferm.nix {}; tests.firefox = callTest tests/firefox.nix {}; @@ -346,7 +344,7 @@ in rec { tests.tomcat = callTest tests/tomcat.nix {}; tests.udisks2 = callTest tests/udisks2.nix {}; tests.vault = callTest tests/vault.nix {}; - tests.virtualbox = callSubTests tests/virtualbox.nix { system = "x86_64-linux"; }; + tests.virtualbox = callSubTestsOnTheseSystems ["x86_64-linux"] tests/virtualbox.nix {}; tests.wordpress = callTest tests/wordpress.nix {}; tests.xfce = callTest tests/xfce.nix {}; tests.xmonad = callTest tests/xmonad.nix {}; -- cgit 1.4.1