~ruther/guix-local

52b9efe337d00f2ce65c4d4ca74ccc3679e6aad8 — Ludovic Courtès 10 years ago 718a2bd
lint: Add 'license' checker.

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

M guix/scripts/lint.scm
M tests/lint.scm
M guix/scripts/lint.scm => guix/scripts/lint.scm +19 -0
@@ 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))

M tests/lint.scm => tests/lint.scm +6 -0
@@ 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