diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/guix-build.sh | 2 | ||||
-rw-r--r-- | tests/guix-gc.sh | 10 | ||||
-rw-r--r-- | tests/guix-package.sh | 2 | ||||
-rw-r--r-- | tests/guix-system.sh | 32 | ||||
-rw-r--r-- | tests/services.scm | 10 | ||||
-rw-r--r-- | tests/workers.scm | 26 |
6 files changed, 76 insertions, 6 deletions
diff --git a/tests/guix-build.sh b/tests/guix-build.sh index 880a582777..004a40dee2 100644 --- a/tests/guix-build.sh +++ b/tests/guix-build.sh @@ -184,7 +184,7 @@ test "`guix build superseded -d`" = "`guix build bar -d`" # Parsing package names and versions. guix build -n time # PASS -guix build -n time@1.7 # PASS, version found +guix build -n time@1.8 # PASS, version found if guix build -n time@3.2; # FAIL, version not found then false; else true; fi if guix build -n something-that-will-never-exist; # FAIL diff --git a/tests/guix-gc.sh b/tests/guix-gc.sh index a100f186f5..57c5e7dd61 100644 --- a/tests/guix-gc.sh +++ b/tests/guix-gc.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org> +# Copyright © 2013, 2015, 2017 Ludovic Courtès <ludo@gnu.org> # # This file is part of GNU Guix. # @@ -25,6 +25,14 @@ guix gc --version trap "rm -f guix-gc-root" EXIT rm -f guix-gc-root +# Below we are using 'drv' and 'out' to contain store file names. If 'drv' +# and 'out' are environment variables, 'list-runtime-roots' will "see" them +# and thus prevent $drv and $out from being garbage-collected. Using 'unset' +# allows us to make sure these are truly local shell variables and not +# environments variables. +unset drv +unset out + # For some operations, passing extra arguments is an error. for option in "" "-C 500M" "--verify" "--optimize" do diff --git a/tests/guix-package.sh b/tests/guix-package.sh index 99952f130c..ffc8c64e24 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -337,6 +337,6 @@ if guix package --bootstrap -n -m "$module_dir/manifest.scm" \ then false else cat "$module_dir/stderr" - grep "manifest.scm:[1-3]:.*[Uu]nbound variable.*wonderful-package" \ + grep "manifest.scm:[1-3]:.*wonderful-package.*: unbound variable" \ "$module_dir/stderr" fi diff --git a/tests/guix-system.sh b/tests/guix-system.sh index 31ee637133..4bb866adfa 100644 --- a/tests/guix-system.sh +++ b/tests/guix-system.sh @@ -68,6 +68,34 @@ else fi +# Reporting of module not found errors. + +cat > "$tmpfile" <<EOF +;; Line 1. +(use-modules (gnu)) + (use-service-modules openssh) +EOF + +if guix system build "$tmpfile" -n 2> "$errorfile" +then false +else + grep "$tmpfile:3:2: .*module .*openssh.*not found" "$errorfile" + grep "Try.*use-service-modules ssh" "$errorfile" +fi + +cat > "$tmpfile" <<EOF +;; Line 1. +(use-modules (gnu)) + (use-package-modules qemu) +EOF + +if guix system build "$tmpfile" -n 2> "$errorfile" +then false +else + grep "$tmpfile:3:2: .*module .*qemu.*not found" "$errorfile" + grep "Try.*use-package-modules virtualization" "$errorfile" +fi + # Reporting of unbound variables. cat > "$tmpfile" <<EOF @@ -95,9 +123,9 @@ else then # FIXME: With Guile 2.2.0 the error is reported on line 4. # See <http://bugs.gnu.org/26107>. - grep "$tmpfile:[49]:.*[Uu]nbound variable.*GRUB-config" "$errorfile" + grep "$tmpfile:[49]:[0-9]: GRUB-config.*[Uu]nbound variable" "$errorfile" else - grep "$tmpfile:9:.*[Uu]nbound variable.*GRUB-config" "$errorfile" + grep "$tmpfile:9:[0-9]: GRUB-config.*[Uu]nbound variable" "$errorfile" fi fi diff --git a/tests/services.scm b/tests/services.scm index 8484ee982a..ca32b565c4 100644 --- a/tests/services.scm +++ b/tests/services.scm @@ -23,7 +23,8 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) - #:use-module (srfi srfi-64)) + #:use-module (srfi srfi-64) + #:use-module (ice-9 match)) (define live-service (@@ (gnu services herd) live-service)) @@ -206,4 +207,11 @@ (list (map live-service-provision unload) (map shepherd-service-provision load))))) +(test-eq "lookup-service-types" + system-service-type + (and (null? (lookup-service-types 'does-not-exist-at-all)) + (match (lookup-service-types 'system) + ((one) one) + (x x)))) + (test-end) diff --git a/tests/workers.scm b/tests/workers.scm index 44b882f691..4eaefbb43d 100644 --- a/tests/workers.scm +++ b/tests/workers.scm @@ -42,4 +42,30 @@ (poll))) result)) +;; Same as above, but throw exceptions within the workers and make sure they +;; remain alive. +(test-equal "exceptions" + 4242 + (let* ((pool (make-pool 10)) + (result 0) + (1+! (let ((lock (make-mutex))) + (lambda () + (with-mutex lock + (set! result (+ result 1))))))) + (let loop ((i 10)) + (unless (zero? i) + (pool-enqueue! pool (lambda () + (throw 'whatever))) + (loop (- i 1)))) + (let loop ((i 4242)) + (unless (zero? i) + (pool-enqueue! pool 1+!) + (loop (- i 1)))) + (let poll () + (unless (pool-idle? pool) + (pk 'busy result) + (sleep 1) + (poll))) + result)) + (test-end) |