diff --git a/tests/common.sh.in b/tests/common.sh.in index 5865cf1d..08faeea7 100644 --- a/tests/common.sh.in +++ b/tests/common.sh.in @@ -76,3 +76,8 @@ clearProfiles() { clearManifests() { rm -f $NIX_STATE_DIR/manifests/* } + +fail() { + echo "$1" + exit 1 +} diff --git a/tests/export-graph.nix b/tests/export-graph.nix index b7afa2a8..d65ad8c1 100644 --- a/tests/export-graph.nix +++ b/tests/export-graph.nix @@ -2,21 +2,27 @@ with import ./config.nix; rec { - buildGraphBuilder = builtins.toFile "build-graph-builder" + printRefs = '' while read path; do read drv read nrRefs echo "$path has $nrRefs references" - echo -n "$path" >> $out + echo "$path" >> $out for ((n = 0; n < $nrRefs; n++)); do read ref; echo "ref $ref"; done done < refs ''; - buildGraph = mkDerivation { + runtimeGraph = mkDerivation { name = "dependencies"; - builder = buildGraphBuilder; + builder = builtins.toFile "build-graph-builder" "${printRefs}"; exportReferencesGraph = ["refs" (import ./dependencies.nix)]; }; + buildGraph = mkDerivation { + name = "dependencies"; + builder = builtins.toFile "build-graph-builder" "${printRefs}"; + exportBuildReferencesGraph = ["refs" (import ./dependencies.nix).drvPath]; + }; + } diff --git a/tests/export-graph.sh b/tests/export-graph.sh index f31bc75a..5cba57f9 100644 --- a/tests/export-graph.sh +++ b/tests/export-graph.sh @@ -3,7 +3,24 @@ source common.sh clearStore clearProfiles -outPath=$($nixbuild ./export-graph.nix) +checkRef() { + nix-store -q --references ./result | grep -q "$1" || fail "missing reference $1" +} + +# Test the export of the runtime dependency graph. + +outPath=$($nixbuild ./export-graph.nix -A runtimeGraph) test $(nix-store -q --references ./result | wc -l) = 2 || fail "bad nr of references" -nix-store -q --references ./result | grep -q input-2 || fail "missing reference" + +checkRef input-2 +for i in $(cat $outPath); do checkRef $i; done + +# Test the export of the build-time dependency graph. + +outPath=$($nixbuild ./export-graph.nix -A buildGraph) + +checkRef input-1 +checkRef input-2 + +for i in $(cat $outPath); do checkRef $i; done