summaryrefslogtreecommitdiff
path: root/tests/store.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-01-17 15:59:00 +0100
committerLudovic Courtès <ludo@gnu.org>2015-01-17 15:59:00 +0100
commit5b3d863f0099257890f9714f81e24789f8e8e362 (patch)
tree0e99805e5b4c9bd6f61cd76c5a838230e1360678 /tests/store.scm
parent867d8473059ffdb0735587617b49547252af0d3d (diff)
downloadguix-patches-5b3d863f0099257890f9714f81e24789f8e8e362.tar
guix-patches-5b3d863f0099257890f9714f81e24789f8e8e362.tar.gz
store: Add #:recursive? parameter to 'export-paths'.
* guix/store.scm (export-paths): Add #:recursive? parameter and honor it. * tests/store.scm ("export/import incomplete", "export/import recursive"): New tests.
Diffstat (limited to 'tests/store.scm')
-rw-r--r--tests/store.scm33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/store.scm b/tests/store.scm
index f43fcb14d0..6d3854c2b3 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -552,6 +552,39 @@ Deriver: ~a~%"
(equal? (list file0) (references %store file1))
(equal? (list file1) (references %store file2)))))))
+(test-assert "export/import incomplete"
+ (let* ((file0 (add-text-to-store %store "baz" (random-text)))
+ (file1 (add-text-to-store %store "foo" (random-text)
+ (list file0)))
+ (file2 (add-text-to-store %store "bar" (random-text)
+ (list file1)))
+ (dump (call-with-bytevector-output-port
+ (cute export-paths %store (list file2) <>))))
+ (delete-paths %store (list file0 file1 file2))
+ (guard (c ((nix-protocol-error? c)
+ (and (not (zero? (nix-protocol-error-status c)))
+ (string-contains (nix-protocol-error-message c)
+ "not valid"))))
+ ;; Here we get an exception because DUMP does not include FILE0 and
+ ;; FILE1, which are dependencies of FILE2.
+ (import-paths %store (open-bytevector-input-port dump)))))
+
+(test-assert "export/import recursive"
+ (let* ((file0 (add-text-to-store %store "baz" (random-text)))
+ (file1 (add-text-to-store %store "foo" (random-text)
+ (list file0)))
+ (file2 (add-text-to-store %store "bar" (random-text)
+ (list file1)))
+ (dump (call-with-bytevector-output-port
+ (cute export-paths %store (list file2) <>
+ #:recursive? #t))))
+ (delete-paths %store (list file0 file1 file2))
+ (let ((imported (import-paths %store (open-bytevector-input-port dump))))
+ (and (equal? imported (list file0 file1 file2))
+ (every file-exists? (list file0 file1 file2))
+ (equal? (list file0) (references %store file1))
+ (equal? (list file1) (references %store file2))))))
+
(test-assert "import corrupt path"
(let* ((text (random-text))
(file (add-text-to-store %store "text" text))