aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-03-04 17:57:04 +0100
committerLudovic Courtès <ludo@gnu.org>2016-03-05 00:19:10 +0100
commit6581ec9ab9ccb82cf1ddd7cf78c02975954bf8bf (patch)
tree19c04ecf5cb3640115be7cde5559ee0e8ba75ef8 /tests
parent7bfeb9df20906fd80c91fecccac3f56d0da05238 (diff)
downloadgnu-guix-6581ec9ab9ccb82cf1ddd7cf78c02975954bf8bf.tar
gnu-guix-6581ec9ab9ccb82cf1ddd7cf78c02975954bf8bf.tar.gz
store: Add 'references/substitutes'.
* guix/store.scm (references/substitutes): New procedure. * tests/store.scm ("references/substitutes missing reference info") ("references/substitutes with substitute info"): New tests.
Diffstat (limited to 'tests')
-rw-r--r--tests/store.scm35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/store.scm b/tests/store.scm
index de070eab23..3d32d52758 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -196,6 +196,41 @@
(null? (references %store t1))
(null? (referrers %store t2)))))
+(test-assert "references/substitutes missing reference info"
+ (with-store s
+ (set-build-options s #:use-substitutes? #f)
+ (guard (c ((nix-protocol-error? c) #t))
+ (let* ((b (add-to-store s "bash" #t "sha256"
+ (search-bootstrap-binary "bash"
+ (%current-system))))
+ (d (derivation s "the-thing" b '("--help")
+ #:inputs `((,b)))))
+ (references/substitutes s (list (derivation->output-path d) b))))))
+
+(test-assert "references/substitutes with substitute info"
+ (with-store s
+ (set-build-options s #:use-substitutes? #t)
+ (let* ((t1 (add-text-to-store s "random1" (random-text)))
+ (t2 (add-text-to-store s "random2" (random-text)
+ (list t1)))
+ (t3 (add-text-to-store s "build" "echo -n $t2 > $out"))
+ (b (add-to-store s "bash" #t "sha256"
+ (search-bootstrap-binary "bash"
+ (%current-system))))
+ (d (derivation s "the-thing" b `("-e" ,t3)
+ #:inputs `((,b) (,t3) (,t2))
+ #:env-vars `(("t2" . ,t2))))
+ (o (derivation->output-path d)))
+ (with-derivation-narinfo d
+ (sha256 => (sha256 (string->utf8 t2)))
+ (references => (list t2))
+
+ (equal? (references/substitutes s (list o t3 t2 t1))
+ `((,t2) ;refs of O
+ () ;refs of T3
+ (,t1) ;refs of T2
+ ())))))) ;refs of T1
+
(test-assert "requisites"
(let* ((t1 (add-text-to-store %store "random1"
(random-text) '()))