mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
channels: Error out when the 'guix' channel lacks an introduction.
* guix/channels.scm (latest-channel-instance): Raise an error instead of warning when 'guix is unauthenticated. * tests/channels.scm ("latest-channel-instances, missing introduction for 'guix'"): New test.
This commit is contained in:
parent
0a8dd8aae5
commit
ead5c46147
2 changed files with 31 additions and 3 deletions
|
@ -406,9 +406,16 @@ (define (dot-git? file stat)
|
||||||
;; TODO: Warn for all the channels once the authentication interface
|
;; TODO: Warn for all the channels once the authentication interface
|
||||||
;; is public.
|
;; is public.
|
||||||
(when (guix-channel? channel)
|
(when (guix-channel? channel)
|
||||||
(warning (G_ "channel '~a' lacks an introduction and \
|
(raise (condition
|
||||||
cannot be authenticated~%")
|
(&message
|
||||||
(channel-name channel))))
|
(message (format #f (G_ "channel '~a' lacks an \
|
||||||
|
introduction and cannot be authenticated~%")
|
||||||
|
(channel-name channel))))
|
||||||
|
(&fix-hint
|
||||||
|
(hint (G_ "Add the missing introduction to your
|
||||||
|
channels file to address the issue. Alternatively, you can pass
|
||||||
|
@option{--disable-authentication}, at the risk of running unauthenticated and
|
||||||
|
thus potentially malicious code.")))))))
|
||||||
(warning (G_ "channel authentication disabled~%")))
|
(warning (G_ "channel authentication disabled~%")))
|
||||||
|
|
||||||
(when (guix-channel? channel)
|
(when (guix-channel? channel)
|
||||||
|
|
|
@ -402,6 +402,27 @@ (define (find-commit* message)
|
||||||
(channel-news-for-commit channel commit5 commit1))
|
(channel-news-for-commit channel commit5 commit1))
|
||||||
'(#f "tag-for-first-news-entry")))))))
|
'(#f "tag-for-first-news-entry")))))))
|
||||||
|
|
||||||
|
(unless (which (git-command)) (test-skip 1))
|
||||||
|
(test-assert "latest-channel-instances, missing introduction for 'guix'"
|
||||||
|
(with-temporary-git-repository directory
|
||||||
|
'((add "a.txt" "A")
|
||||||
|
(commit "first commit")
|
||||||
|
(add "b.scm" "#t")
|
||||||
|
(commit "second commit"))
|
||||||
|
(with-repository directory repository
|
||||||
|
(let* ((commit1 (find-commit repository "first"))
|
||||||
|
(commit2 (find-commit repository "second"))
|
||||||
|
(channel (channel (url (string-append "file://" directory))
|
||||||
|
(name 'guix))))
|
||||||
|
|
||||||
|
(guard (c ((message-condition? c)
|
||||||
|
(->bool (string-contains (condition-message c)
|
||||||
|
"introduction"))))
|
||||||
|
(with-store store
|
||||||
|
;; Attempt a downgrade from NEW to OLD.
|
||||||
|
(latest-channel-instances store (list channel))
|
||||||
|
#f))))))
|
||||||
|
|
||||||
(unless (gpg+git-available?) (test-skip 1))
|
(unless (gpg+git-available?) (test-skip 1))
|
||||||
(test-equal "authenticate-channel, wrong first commit signer"
|
(test-equal "authenticate-channel, wrong first commit signer"
|
||||||
#t
|
#t
|
||||||
|
|
Loading…
Reference in a new issue