diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/derivations.scm | 38 | ||||
-rw-r--r-- | tests/guix-package.sh | 12 | ||||
-rw-r--r-- | tests/snix.scm | 4 | ||||
-rw-r--r-- | tests/union.scm | 19 |
4 files changed, 65 insertions, 8 deletions
diff --git a/tests/derivations.scm b/tests/derivations.scm index 692b2aea8d..166a917490 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -360,6 +360,44 @@ ;; built. (null? (derivation-prerequisites-to-build %store drv)))) +(test-assert "derivation-prerequisites-to-build when outputs already present" + (let*-values (((builder) + '(begin (mkdir %output) #t)) + ((input-drv-path input-drv) + (build-expression->derivation %store "input" + (%current-system) + builder '())) + ((input-path) + (derivation-output-path + (assoc-ref (derivation-outputs input-drv) + "out"))) + ((drv-path drv) + (build-expression->derivation %store "something" + (%current-system) + builder + `(("i" ,input-drv-path)))) + ((output) + (derivation-output-path + (assoc-ref (derivation-outputs drv) "out")))) + ;; Make sure these things are not already built. + (when (valid-path? %store input-path) + (delete-paths %store (list input-path))) + (when (valid-path? %store output) + (delete-paths %store (list output))) + + (and (equal? (map derivation-input-path + (derivation-prerequisites-to-build %store drv)) + (list input-drv-path)) + + ;; Build DRV and delete its input. + (build-derivations %store (list drv-path)) + (delete-paths %store (list input-path)) + (not (valid-path? %store input-path)) + + ;; Now INPUT-PATH is missing, yet it shouldn't be listed as a + ;; prerequisite to build because DRV itself is already built. + (null? (derivation-prerequisites-to-build %store drv))))) + (test-assert "build-expression->derivation with expression returning #f" (let* ((builder '(begin (mkdir %output) diff --git a/tests/guix-package.sh b/tests/guix-package.sh index 81b7f05634..bd2c816b9a 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +# Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> # # This file is part of GNU Guix. # @@ -27,13 +27,13 @@ rm -f "$profile" trap 'rm "$profile" "$profile-"[0-9]*' EXIT -guix-package -b -p "$profile" \ +guix-package --bootstrap -p "$profile" \ -i `guix-build -e '(@@ (distro packages base) %bootstrap-guile)'` test -L "$profile" && test -L "$profile-1-link" test -f "$profile/bin/guile" # Installing the same package a second time does nothing. -guix-package -b -p "$profile" \ +guix-package --bootstrap -p "$profile" \ -i `guix-build -e '(@@ (distro packages base) %bootstrap-guile)'` test -L "$profile" && test -L "$profile-1-link" ! test -f "$profile-2-link" @@ -42,7 +42,7 @@ test -f "$profile/bin/guile" # Check whether we have network access. if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null then - guix-package -b -p "$profile" \ + guix-package --bootstrap -p "$profile" \ -i `guix-build -e '(@@ (distro packages base) gnu-make-boot0)'` test -L "$profile-2-link" test -f "$profile/bin/make" && test -f "$profile/bin/guile" @@ -64,13 +64,13 @@ then test "`guix-package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap" # Remove a package. - guix-package -b -p "$profile" -r "guile-bootstrap" + guix-package --bootstrap -p "$profile" -r "guile-bootstrap" test -L "$profile-3-link" test -f "$profile/bin/make" && ! test -f "$profile/bin/guile" fi # Make sure the `:' syntax works. -guix-package -b -i "libsigsegv:lib" -n +guix-package --bootstrap -i "libsigsegv:lib" -n # Check whether `--list-available' returns something sensible. guix-package -A 'gui.*e' | grep guile diff --git a/tests/snix.scm b/tests/snix.scm index 7623d0cd8f..89582f2408 100644 --- a/tests/snix.scm +++ b/tests/snix.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -61,7 +61,7 @@ ('home-page (? string?)) ('synopsis (? string?)) ('description (? string?)) - ('license (? string?))) + ('license (? symbol?))) (and (member '("libffi" ,libffi) inputs) (member '("gmp" ,gmp) pinputs) #t)) diff --git a/tests/union.scm b/tests/union.scm index 58c0a301b2..5bbf992a59 100644 --- a/tests/union.scm +++ b/tests/union.scm @@ -65,6 +65,25 @@ (bin make) (share (doc (make README)))))) +(test-equal "delete-duplicate-leaves, default" + '(bin make touch ls) + (delete-duplicate-leaves '(bin ls make touch ls))) + +(test-equal "delete-duplicate-leaves, file names" + '("doc" ("info" + "/binutils/ld.info" + "/gcc/gcc.info" + "/binutils/standards.info")) + (let ((leaf=? (lambda (a b) + (string=? (basename a) (basename b))))) + (delete-duplicate-leaves '("doc" + ("info" + "/binutils/ld.info" + "/binutils/standards.info" + "/gcc/gcc.info" + "/gcc/standards.info")) + leaf=?))) + (test-skip (if (and %store (false-if-exception (getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV))) |