aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/ui.scm10
-rw-r--r--tests/ui.scm9
2 files changed, 16 insertions, 3 deletions
diff --git a/guix/ui.scm b/guix/ui.scm
index 09cb6f48ff..9558d38ca8 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -769,7 +769,7 @@ Command-line options take precedence those passed via 'GUIX_BUILD_OPTIONS'.
ARGUMENT-HANDLER is called for non-option arguments, like the 'operand-proc'
parameter of 'args-fold'."
- (define (parse-options-from args)
+ (define (parse-options-from args seeds)
;; Actual parsing takes place here.
(apply args-fold* args options
(lambda (opt name arg . rest)
@@ -777,8 +777,12 @@ parameter of 'args-fold'."
argument-handler
seeds))
- (append (parse-options-from args)
- (parse-options-from (environment-build-options))))
+ (call-with-values
+ (lambda ()
+ (parse-options-from (environment-build-options) seeds))
+ (lambda seeds
+ ;; ARGS take precedence over what the environment variable specifies.
+ (parse-options-from args seeds))))
(define (show-guix-usage)
(format (current-error-port)
diff --git a/tests/ui.scm b/tests/ui.scm
index c71fc71cc1..1478fe213e 100644
--- a/tests/ui.scm
+++ b/tests/ui.scm
@@ -82,6 +82,15 @@ interface, and powerful string processing.")
%standard-build-options
(list '()))))
+(test-equal "parse-command-line and --no options"
+ '((argument . "foo")
+ (substitutes? . #f)) ;takes precedence
+
+ (with-environment-variable "GUIX_BUILD_OPTIONS" "--no-substitutes"
+ (parse-command-line '("foo")
+ %standard-build-options
+ (list '((substitutes? . #t))))))
+
(test-assert "fill-paragraph"
(every (lambda (column)
(every (lambda (width)