50 lines
1.6 KiB
Nix
50 lines
1.6 KiB
Nix
|
# Call nix-build on this file to run all tests in this directory
|
||
|
|
||
|
# This produces a link farm derivation with the original attrs
|
||
|
# merged on top of it.
|
||
|
# You can run parts of the "hierarchy" with for example:
|
||
|
# nix-build -A java-properties
|
||
|
# See `structured` below.
|
||
|
|
||
|
{ pkgs ? import ../../.. { } }:
|
||
|
let
|
||
|
inherit (pkgs.lib) mapAttrs mapAttrsToList isDerivation mergeAttrs foldl' attrValues recurseIntoAttrs;
|
||
|
|
||
|
structured = {
|
||
|
formats = import ./formats.nix { inherit pkgs; };
|
||
|
java-properties = recurseIntoAttrs {
|
||
|
jdk8 = pkgs.callPackage ../formats/java-properties/test { jdk = pkgs.jdk8; };
|
||
|
jdk11 = pkgs.callPackage ../formats/java-properties/test { jdk = pkgs.jdk11_headless; };
|
||
|
jdk17 = pkgs.callPackage ../formats/java-properties/test { jdk = pkgs.jdk17_headless; };
|
||
|
};
|
||
|
|
||
|
libconfig = recurseIntoAttrs (import ../formats/libconfig/test { inherit pkgs; });
|
||
|
|
||
|
hocon = recurseIntoAttrs (import ../formats/hocon/test { inherit pkgs; });
|
||
|
};
|
||
|
|
||
|
flatten = prefix: as:
|
||
|
foldl'
|
||
|
mergeAttrs
|
||
|
{ }
|
||
|
(attrValues
|
||
|
(mapAttrs
|
||
|
(k: v:
|
||
|
if isDerivation v
|
||
|
then { "${prefix}${k}" = v; }
|
||
|
else if v?recurseForDerivations
|
||
|
then flatten "${prefix}${k}-" (removeAttrs v [ "recurseForDerivations" ])
|
||
|
else builtins.trace v throw "expected derivation or recurseIntoAttrs")
|
||
|
as
|
||
|
)
|
||
|
);
|
||
|
in
|
||
|
|
||
|
# It has to be a link farm for inclusion in the hydra unstable jobset.
|
||
|
pkgs.linkFarm "pkgs-lib-formats-tests"
|
||
|
(mapAttrsToList
|
||
|
(k: v: { name = k; path = v; })
|
||
|
(flatten "" structured)
|
||
|
)
|
||
|
// structured
|