blob: 7f7c6be3ce4709fd8955c0bdbf78146ea6ea8ca6 (
plain) (
tree)
|
|
{
nixos-lib,
pkgs,
}:
let
dsl = ./dsl.nix;
diamond.dag = {
nodes.a = { };
nodes.b.inputs.a = { }; # b->a
nodes.c.inputs.a = { }; # c->a
nodes.d.inputs.b = { }; # d->b
nodes.d.inputs.c = { }; # d->c
};
# A B C D E
# \ | / | |
# U V W X
sunset.dag = {
nodes = let
abcInputs = {
u = {};
v = {};
};
in {
a = {
request = true;
inputs = abcInputs;
};
b = {
request = true;
inputs = abcInputs;
};
c = {
request = true;
inputs = abcInputs;
};
d = {
request = true;
inputs.w = {};
};
e = {
request = true;
inputs.x = {};
};
u = {};
v = {};
w = {};
x = {};
};
};
in
builtins.mapAttrs
(
name: value:
nixos-lib.runTest (
{
inherit name;
hostPkgs = pkgs;
testScript = ''
start_all()
substituter.wait_for_unit("nix-serve.service")
builder.succeed("dag-test")
'';
}
// value
// { imports = value.imports ++ [ dsl ]; }
)
)
{
diamond-unbuilt-0 = {
imports = [
{
dag.needBuilds = 0;
dag.needDownloads = 0;
}
diamond
];
};
diamond-unbuilt-2 = {
imports = [
{
dag.nodes.a.cache = "remote";
dag.nodes.b.cache = "remote";
dag.nodes.d.request = true;
dag.needBuilds = 2;
dag.needDownloads = 2;
}
diamond
];
};
diamond-unbuilt-4 = {
imports = [
{
dag.nodes.d.request = true;
dag.needBuilds = 4;
dag.needDownloads = 0;
}
diamond
];
};
}
|