about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTuomas Tynkkynen <tuomas@tuxera.com>2018-01-22 23:19:06 +0200
committerTuomas Tynkkynen <tuomas@tuxera.com>2018-01-23 12:24:33 +0200
commit8353ebe073efeecf31f3a67456f3bebbbdedd639 (patch)
tree7e0787d0ad0a04ff9872a3b26ab5d896fcc0015b
parentec0c4802ae89dccfbff1060fd411b46113e87671 (diff)
downloadnixlib-8353ebe073efeecf31f3a67456f3bebbbdedd639.tar
nixlib-8353ebe073efeecf31f3a67456f3bebbbdedd639.tar.gz
nixlib-8353ebe073efeecf31f3a67456f3bebbbdedd639.tar.bz2
nixlib-8353ebe073efeecf31f3a67456f3bebbbdedd639.tar.lz
nixlib-8353ebe073efeecf31f3a67456f3bebbbdedd639.tar.xz
nixlib-8353ebe073efeecf31f3a67456f3bebbbdedd639.tar.zst
nixlib-8353ebe073efeecf31f3a67456f3bebbbdedd639.zip
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.
-rw-r--r--nixos/release-combined.nix2
-rw-r--r--nixos/release.nix14
2 files changed, 7 insertions, 9 deletions
diff --git a/nixos/release-combined.nix b/nixos/release-combined.nix
index 6583b13b844e..3564e6298256 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 846d87b18d6a..b8a87b3acf44 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 {};