Unverified Commit e3f583c5 authored by Wolfgang Walther's avatar Wolfgang Walther
Browse files

ci/eval: eval nixosTests.simple

We can't eval all nixos tests, this would be way too expensive. But we
can evaluate `nixosTests.simple` as an indication whether the nixos test
driver has changed. If that's the case, this means that *all* NixOS
tests need to be rebuilt.
parent 16f9d536
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -14,7 +14,8 @@
}:
let
  lib = import (path + "/lib");
  hydraJobs =

  nixpkgsJobs =
    import (path + "/pkgs/top-level/release.nix")
      # Compromise: accuracy vs. resources needed for evaluation.
      {
@@ -59,9 +60,15 @@ let
          __allowFileset = false;
        };
      };

  nixosJobs = import (path + "/nixos/release.nix") {
    inherit attrNamesOnly;
    supportedSystems = if systems == null then [ builtins.currentSystem ] else systems;
  };

  recurseIntoAttrs = attrs: attrs // { recurseForDerivations = true; };

  # hydraJobs leaves recurseForDerivations as empty attrmaps;
  # release-lib leaves recurseForDerivations as empty attrmaps;
  # that would break nix-env and we also need to recurse everywhere.
  tweak = lib.mapAttrs (
    name: val:
@@ -87,4 +94,9 @@ let
  ];

in
tweak (builtins.removeAttrs hydraJobs blacklist)
tweak (
  (builtins.removeAttrs nixpkgsJobs blacklist)
  // {
    nixosTests.simple = nixosJobs.tests.simple;
  }
)
+29 −7
Original line number Diff line number Diff line
@@ -12,6 +12,16 @@ with import ../lib;
    "aarch64-linux"
  ],
  configuration ? { },

  # This flag, if set to true, causes the resulting tree of attributes
  # to *not* have a ".${system}" suffixed upon every job name like Hydra
  # expects. So far, this is only implemented for `tests`.
  #
  # This flag exists mainly for use by ci/eval/attrpaths.nix; see
  # that file for full details.  The exact behavior of this flag
  # may change; it should be considered an internal implementation
  # detail of ci/eval.
  attrNamesOnly ? false,
}:

with import ../pkgs/top-level/release-lib.nix { inherit supportedSystems; };
@@ -31,7 +41,12 @@ let
    import ./tests/all-tests.nix {
      inherit system;
      pkgs = import ./.. { inherit system; };
      callTest = config: {
      callTest =
        config:
        if attrNamesOnly then
          hydraJob config.test
        else
          {
            ${system} = hydraJob config.test;
          };
    }
@@ -41,13 +56,20 @@ let
      allDrivers = import ./tests/all-tests.nix {
        inherit system;
        pkgs = import ./.. { inherit system; };
        callTest = config: {
        callTest =
          config:
          if attrNamesOnly then
            hydraJob config.test
          else
            {
              ${system} = hydraJob config.driver;
            };
      };
    };

  allTests = foldAttrs recursiveUpdate { } (map allTestsForSystem supportedSystems);
  allTests = foldAttrs recursiveUpdate { } (
    map allTestsForSystem (if attrNamesOnly then [ (head supportedSystems) ] else supportedSystems)
  );

  pkgs = import ./.. { system = "x86_64-linux"; };