summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2009-03-17 16:33:48 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2009-03-17 16:33:48 +0000
commit2d5114452d8a8f73c858f9beb6bfaafe35e7bf9a (patch)
tree676ad5958bce42d91d09518cf44c61a6414ac0e2
parent33ecb4299107da91f5d61131ead37afabe496649 (diff)
downloadguix-2d5114452d8a8f73c858f9beb6bfaafe35e7bf9a.tar.gz
* Regression test for the `exportReferencesGraph'
  derivation attribute. 

-rw-r--r--tests/Makefile.am6
-rw-r--r--tests/config.nix.in9
-rw-r--r--tests/dependencies.builder0.sh2
-rw-r--r--tests/dependencies.nix22
-rw-r--r--tests/dependencies.nix.in29
-rw-r--r--tests/export-graph.nix23
-rw-r--r--tests/export-graph.sh9
-rw-r--r--tests/logging.sh2
8 files changed, 69 insertions, 33 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ab6ac426aa..e61d4faa85 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -3,7 +3,7 @@ TESTS_ENVIRONMENT = $(SHELL) -e
 extra1 = $(shell pwd)/test-tmp/shared
 
 simple.sh substitutes.sh substitutes2.sh fallback.sh: simple.nix
-dependencies.sh gc.sh nix-push.sh nix-pull.in logging.sh nix-build.sh install-package.sh check-refs.sh: dependencies.nix
+dependencies.sh gc.sh nix-push.sh nix-pull.in logging.sh nix-build.sh install-package.sh check-refs.sh export-graph.sh: config.nix
 locking.sh: locking.nix
 parallel.sh: parallel.nix
 build-hook.sh: build-hook.nix
@@ -19,7 +19,7 @@ TESTS = init.sh hash.sh lang.sh add.sh simple.sh dependencies.sh \
   fallback.sh nix-push.sh gc.sh gc-concurrent.sh verify.sh nix-pull.sh \
   referrers.sh user-envs.sh logging.sh nix-build.sh misc.sh fixed.sh \
   gc-runtime.sh install-package.sh check-refs.sh filter-source.sh \
-  remote-store.sh export.sh
+  remote-store.sh export.sh export-graph.sh
 
 XFAIL_TESTS =
 
@@ -30,7 +30,7 @@ $(TESTS): common.sh
 EXTRA_DIST = $(TESTS) \
   simple.nix.in simple.builder.sh \
   hash-check.nix \
-  dependencies.nix.in dependencies.builder*.sh \
+  dependencies.nix dependencies.builder*.sh \
   locking.nix.in locking.builder.sh \
   parallel.nix.in parallel.builder.sh \
   build-hook.nix.in build-hook.hook.sh \
diff --git a/tests/config.nix.in b/tests/config.nix.in
new file mode 100644
index 0000000000..a58295f982
--- /dev/null
+++ b/tests/config.nix.in
@@ -0,0 +1,9 @@
+{
+  mkDerivation = args:
+    derivation ({
+      system = "@system@";
+      builder = "@shell@";
+      args = ["-e" args.builder];
+      PATH = "@testPath@";
+    } // removeAttrs args ["builder"]);
+}
diff --git a/tests/dependencies.builder0.sh b/tests/dependencies.builder0.sh
index dc0bd9a9bb..ea4116d902 100644
--- a/tests/dependencies.builder0.sh
+++ b/tests/dependencies.builder0.sh
@@ -5,3 +5,5 @@ ln -s $input2 $out/input-2
 
 # Self-reference.
 ln -s $out $out/self
+
+echo FOO
diff --git a/tests/dependencies.nix b/tests/dependencies.nix
new file mode 100644
index 0000000000..a397e1ce41
--- /dev/null
+++ b/tests/dependencies.nix
@@ -0,0 +1,22 @@
+with import ./config.nix;
+
+let {
+
+  input1 = mkDerivation {
+    name = "dependencies-input-1";
+    builder = ./dependencies.builder1.sh;
+  };
+
+  input2 = mkDerivation {
+    name = "dependencies-input-2";
+    builder = ./. ~ "dependencies.builder2.sh";
+  };
+
+  body = mkDerivation {
+    name = "dependencies";
+    builder = ./dependencies.builder0.sh  + "/FOOBAR/../.";
+    input1 = input1 + "/.";
+    inherit input2;
+  };
+
+}
diff --git a/tests/dependencies.nix.in b/tests/dependencies.nix.in
deleted file mode 100644
index c33c6a8d97..0000000000
--- a/tests/dependencies.nix.in
+++ /dev/null
@@ -1,29 +0,0 @@
-let {
-
-  input1 = derivation {
-    name = "dependencies-input-1";
-    system = "@system@";
-    builder = "@shell@";
-    args = ["-e" "-x" ./dependencies.builder1.sh];
-    PATH = "@testPath@";
-  };
-
-  input2 = derivation {
-    name = "dependencies-input-2";
-    system = "@system@";
-    builder = "@shell@";
-    args = ["-e" "-x" (./. ~ "dependencies.builder2.sh")];
-    PATH = "@testPath@";
-  };
-
-  body = derivation {
-    name = "dependencies";
-    system = "@system@";
-    builder = "@shell@";
-    args = ["-e" "-x" (./dependencies.builder0.sh  + "/FOOBAR/../.")];
-    PATH = "@testPath@";
-    input1 = input1 + "/.";
-    inherit input2;
-  };
-
-}
\ No newline at end of file
diff --git a/tests/export-graph.nix b/tests/export-graph.nix
new file mode 100644
index 0000000000..3e30d2dcea
--- /dev/null
+++ b/tests/export-graph.nix
@@ -0,0 +1,23 @@
+with import ./config.nix;
+
+rec {
+
+  buildGraphBuilder = builtins.toFile "build-graph-builder"
+    ''
+      #cat refs
+      while read path; do
+          read drv
+          read nrRefs
+          echo "$path has $nrRefs references"
+          echo -n "$path" >> $out
+          for ((n = 0; n < $nrRefs; n++)); do read ref; echo "ref $ref"; done
+      done < refs
+    '';
+
+  buildGraph = mkDerivation {
+    name = "dependencies";
+    builder = buildGraphBuilder;
+    exportReferencesGraph = ["refs" (import ./dependencies.nix)];
+  };
+
+}
diff --git a/tests/export-graph.sh b/tests/export-graph.sh
new file mode 100644
index 0000000000..f31bc75abf
--- /dev/null
+++ b/tests/export-graph.sh
@@ -0,0 +1,9 @@
+source common.sh
+
+clearStore
+clearProfiles
+
+outPath=$($nixbuild ./export-graph.nix)
+
+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"
diff --git a/tests/logging.sh b/tests/logging.sh
index 585bce2db9..60e2e12341 100644
--- a/tests/logging.sh
+++ b/tests/logging.sh
@@ -19,5 +19,5 @@ if test "$xsltproc" != "false"; then
     # Ideally we would check that the generated HTML is valid...
 
     # A few checks...
-    grep "<li>.*<code>.*echo FOO" $TEST_ROOT/log.html
+    grep "<li>.*<code>.*FOO" $TEST_ROOT/log.html
 fi