summary refs log tree commit diff
path: root/tests/derivations.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/derivations.scm')
-rw-r--r--tests/derivations.scm23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/derivations.scm b/tests/derivations.scm
index bcedfbf948..14e1863a12 100644
--- a/tests/derivations.scm
+++ b/tests/derivations.scm
@@ -124,6 +124,29 @@
                 (string=? (call-with-input-file path read-line)
                           "hello, world"))))))
 
+(test-assert "derivation with local file as input"
+  (let* ((builder    (add-text-to-store
+                      %store "my-builder.sh"
+                      "(while read line ; do echo $line ; done) < $in > $out"
+                      '()))
+         (input      (search-path %load-path "ice-9/boot-9.scm"))
+         (drv-path   (derivation %store "derivation-with-input-file"
+                                 (%current-system)
+                                 "/bin/sh" `(,builder)
+                                 `(("in"
+                                    ;; Cheat to pass the actual file
+                                    ;; name to the builder.
+                                    . ,(add-to-store %store
+                                                     (basename input)
+                                                     #t #t "sha256"
+                                                     input)))
+                                 `((,builder)
+                                   (,input)))))   ; ← local file name
+    (and (build-derivations %store (list drv-path))
+         (let ((p (derivation-path->output-path drv-path)))
+           (and (call-with-input-file p get-bytevector-all)
+                (call-with-input-file input get-bytevector-all))))))
+
 (test-assert "fixed-output derivation"
   (let* ((builder    (add-text-to-store %store "my-fixed-builder.sh"
                                         "echo -n hello > $out" '()))