aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/fixed.builder2.sh2
-rw-r--r--tests/fixed.nix.in12
-rw-r--r--tests/fixed.sh15
3 files changed, 28 insertions, 1 deletions
diff --git a/tests/fixed.builder2.sh b/tests/fixed.builder2.sh
index bc1a18d6e..31ea1579a 100644
--- a/tests/fixed.builder2.sh
+++ b/tests/fixed.builder2.sh
@@ -1,3 +1,5 @@
+echo dummy: $dummy
+if test -n "$dummy"; then sleep 2; fi
mkdir $out
mkdir $out/bla
echo "Hello World!" > $out/foo
diff --git a/tests/fixed.nix.in b/tests/fixed.nix.in
index ab2448871..47eff91e0 100644
--- a/tests/fixed.nix.in
+++ b/tests/fixed.nix.in
@@ -1,6 +1,6 @@
rec {
- f = builder: mode: algo: hash: derivation {
+ f2 = dummy: builder: mode: algo: hash: derivation {
name = "fixed";
system = "@system@";
builder = "@shell@";
@@ -9,8 +9,11 @@ rec {
outputHashAlgo = algo;
outputHash = hash;
PATH = "@testPath@";
+ inherit dummy;
};
+ f = f2 "";
+
good = [
(f ./fixed.builder1.sh "flat" "md5" "8ddd8be4b179a529afa5f2ffae4b9858")
(f ./fixed.builder1.sh "flat" "sha1" "a0b65939670bc2c010f4d5d6a0b3e4e4590fb92b")
@@ -35,4 +38,11 @@ rec {
(f ./fixed.builder1.sh "flat" "md5" "ddd8be4b179a529afa5f2ffae4b9858")
];
+ # Test for building two derivations in parallel that produce the
+ # same output path because they're fixed-output derivations.
+ parallelSame = [
+ (f2 "foo" ./fixed.builder2.sh "flat" "md5" "3670af73070fa14077ad74e0f5ea4e42")
+ (f2 "bar" ./fixed.builder2.sh "flat" "md5" "3670af73070fa14077ad74e0f5ea4e42")
+ ];
+
} \ No newline at end of file
diff --git a/tests/fixed.sh b/tests/fixed.sh
index fc37e40f4..d0a284af4 100644
--- a/tests/fixed.sh
+++ b/tests/fixed.sh
@@ -1,18 +1,33 @@
source common.sh
+clearStore
+
+echo 'testing good...'
drvs=$($nixinstantiate fixed.nix -A good)
echo $drvs
$nixstore -r $drvs
+echo 'testing good2...'
drvs=$($nixinstantiate fixed.nix -A good2)
echo $drvs
$nixstore -r $drvs
+echo 'testing bad...'
drvs=$($nixinstantiate fixed.nix -A bad)
echo $drvs
if $nixstore -r $drvs; then false; fi
+echo 'testing reallyBad...'
if $nixinstantiate fixed.nix -A reallyBad; then false; fi
# While we're at it, check attribute selection a bit more.
+echo 'testing attribute selection...'
test $($nixinstantiate fixed.nix -A good.1 | wc -l) = 1
+
+# Test parallel builds of derivations that produce the same output.
+# Only one should run at the same time.
+echo 'testing parallelSame...'
+clearStore
+drvs=$($nixinstantiate fixed.nix -A parallelSame)
+echo $drvs
+$nixstore -r $drvs -j2