guix gc: '--verify=foo' is reported as an error.
Fixes <https://bugs.gnu.org/29761>. Reported by Martin Castillo <castilma@uni-bremen.de>. * guix/scripts/gc.scm (argument->verify-options): New procedure. (%options) ["verify"]: Adjust to use it. * tests/guix-gc.sh: Add test.
This commit is contained in:
parent
147d42fc03
commit
3caab236c4
@ -78,6 +78,21 @@ (define (show-help)
|
||||
(newline)
|
||||
(show-bug-report-information))
|
||||
|
||||
(define argument->verify-options
|
||||
(let ((not-comma (char-set-complement (char-set #\,)))
|
||||
(validate (lambda (option)
|
||||
(unless (memq option '(repair contents))
|
||||
(leave (G_ "~a: invalid '--verify' option~%")
|
||||
option)))))
|
||||
(lambda (arg)
|
||||
"Turn ARG into a list of symbols denoting '--verify' options."
|
||||
(if arg
|
||||
(let ((lst (map string->symbol
|
||||
(string-tokenize arg not-comma))))
|
||||
(for-each validate lst)
|
||||
lst)
|
||||
'()))))
|
||||
|
||||
(define %options
|
||||
;; Specification of the command-line options.
|
||||
(list (option '(#\h "help") #f #f
|
||||
@ -112,16 +127,12 @@ (define %options
|
||||
(alist-cons 'action 'optimize
|
||||
(alist-delete 'action result))))
|
||||
(option '("verify") #f #t
|
||||
(let ((not-comma (char-set-complement (char-set #\,))))
|
||||
(lambda (opt name arg result)
|
||||
(let ((options (if arg
|
||||
(map string->symbol
|
||||
(string-tokenize arg not-comma))
|
||||
'())))
|
||||
(alist-cons 'action 'verify
|
||||
(alist-cons 'verify-options options
|
||||
(alist-delete 'action
|
||||
result)))))))
|
||||
(lambda (opt name arg result)
|
||||
(let ((options (argument->verify-options arg)))
|
||||
(alist-cons 'action 'verify
|
||||
(alist-cons 'verify-options options
|
||||
(alist-delete 'action
|
||||
result))))))
|
||||
(option '("list-dead") #f #f
|
||||
(lambda (opt name arg result)
|
||||
(alist-cons 'action 'list-dead
|
||||
|
@ -39,6 +39,9 @@ do
|
||||
if guix gc $option whatever; then false; else true; fi
|
||||
done
|
||||
|
||||
# This should fail.
|
||||
if guix gc --verify=foo; then false; else true; fi
|
||||
|
||||
# Check the references of a .drv.
|
||||
drv="`guix build guile-bootstrap -d`"
|
||||
out="`guix build guile-bootstrap`"
|
||||
|
Loading…
Reference in New Issue
Block a user