summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/scripts/lint.scm19
-rw-r--r--tests/lint.scm6
2 files changed, 25 insertions, 0 deletions
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index 41249b2d15..2a618c9451 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -24,6 +24,7 @@
#: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 @@
check-derivation
check-home-page
check-source
+ check-license
check-formatting
%checkers
@@ -518,6 +520,16 @@ descriptions maintained upstream."
(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.
@@ -620,6 +632,13 @@ them for PACKAGE."
(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")
(check check-source))
diff --git a/tests/lint.scm b/tests/lint.scm
index 5d56420966..ac47dbb768 100644
--- a/tests/lint.scm
+++ b/tests/lint.scm
@@ -329,6 +329,12 @@ requests."
(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