From db393b333f77ffbb573faf47b6df74dc65a0e85b Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 16 Jun 2012 16:46:29 +0200 Subject: build-expression->derivation: Have the build fail when EXP returns #f. * guix/derivations.scm (build-expression->derivation)[builder]: Pass the result of EXP to `exit'. * tests/derivations.scm ("build-expression->derivation with expression returning #f"): New test. --- tests/derivations.scm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'tests/derivations.scm') diff --git a/tests/derivations.scm b/tests/derivations.scm index 4a81a70f65..1e9a136d04 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -29,6 +29,7 @@ #:use-module (rnrs io ports) #:use-module (rnrs bytevectors) #:use-module (ice-9 rdelim) + #:use-module (ice-9 regex) #:use-module (ice-9 ftw) #:use-module (ice-9 match)) @@ -181,6 +182,20 @@ (equal? '(hello guix) (call-with-input-file (string-append p "/test") read)))))) +(test-assert "build-expression->derivation with expression returning #f" + (let* ((builder '(begin + (mkdir %output) + #f)) ; fail! + (drv-path (build-expression->derivation %store "fail" (%current-system) + builder '()))) + (guard (c ((nix-protocol-error? c) + ;; Note that the output path may exist at this point, but it + ;; is invalid. + (not (not (string-match "build .* failed" + (nix-protocol-error-message c)))))) + (build-derivations %store (list drv-path)) + #f))) + (test-assert "build-expression->derivation with two outputs" (let* ((builder '(begin (call-with-output-file (assoc-ref %outputs "out") @@ -265,4 +280,5 @@ ;;; Local Variables: ;;; eval: (put 'test-assert 'scheme-indent-function 1) +;;; eval: (put 'guard 'scheme-indent-function 1) ;;; End: -- cgit v1.2.3