lint: Add 'license' checker.

* guix/scripts/lint.scm (check-license): New procedure.
  (%checkers): Add 'license' checker.
* tests/lint.scm ("license: invalid license"): New test.
This commit is contained in:
Ludovic Courtès 2015-09-06 10:54:51 +02:00
parent 718a2bde42
commit 52b9efe337
2 changed files with 25 additions and 0 deletions

View file

@ -24,6 +24,7 @@ (define-module (guix scripts lint)
#:use-module (guix download)
#:use-module (guix ftp-client)
#:use-module (guix packages)
#:use-module (guix licenses)
#:use-module (guix records)
#:use-module (guix ui)
#:use-module (guix utils)
@ -56,6 +57,7 @@ (define-module (guix scripts lint)
check-derivation
check-home-page
check-source
check-license
check-formatting
%checkers
@ -518,6 +520,16 @@ (define (check-derivation package)
(format #f (_ "failed to create derivation: ~s~%")
args)))))
(define (check-license package)
"Warn about type errors of the 'license' field of PACKAGE."
(match (package-license package)
((or (? license?)
((? license?) ...))
#t)
(x
(emit-warning package (_ "invalid license field")
'license))))
;;;
;;; Source code formatting.
@ -619,6 +631,13 @@ (define %checkers
(name 'home-page)
(description "Validate home-page URLs")
(check check-home-page))
(lint-checker
(name 'license)
;; TRANSLATORS: <license> is the name of a data type and must not be
;; translated.
(description "Make sure the 'license' field is a <license> \
or a list thereof")
(check check-license))
(lint-checker
(name 'source)
(description "Validate source URLs")

View file

@ -329,6 +329,12 @@ (define-syntax-rule (with-warnings body ...)
(check-derivation pkg)))
"failed to create derivation")))
(test-assert "license: invalid license"
(string-contains
(with-warnings
(check-license (dummy-package "x" (license #f))))
"invalid license"))
(test-assert "home-page: wrong home-page"
(->bool
(string-contains