guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/05: lint: Add 'license' checker.


From: Ludovic Courtès
Subject: 02/05: lint: Add 'license' checker.
Date: Sun, 06 Sep 2015 10:36:59 +0000

civodul pushed a commit to branch master
in repository guix.

commit 52b9efe337d00f2ce65c4d4ca74ccc3679e6aad8
Author: Ludovic Courtès <address@hidden>
Date:   Sun Sep 6 10:54:51 2015 +0200

    lint: Add 'license' checker.
    
    * guix/scripts/lint.scm (check-license): New procedure.
      (%checkers): Add 'license' checker.
    * tests/lint.scm ("license: invalid license"): New test.
---
 guix/scripts/lint.scm |   19 +++++++++++++++++++
 tests/lint.scm        |    6 ++++++
 2 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index 41249b2..2a618c9 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 5d56420..ac47dbb 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]