~ruther/guix-local

3500e659f114e0e8213f2b8340128f66251bd7b4 — Mathieu Lirzin 10 years ago 83d95c7
lint: Add 'check-texinfo-markup' checker.

* guix/script/lint.scm (check-description-style): Check for invalid
  Texinfo markup.
* tests/lint.scm: Test it.
2 files changed, 17 insertions(+), 0 deletions(-)

M guix/scripts/lint.scm
M tests/lint.scm
M guix/scripts/lint.scm => guix/scripts/lint.scm +9 -0
@@ 2,6 2,7 @@
;;; Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 141,6 142,13 @@ monad."
                    (_ "description should not be empty")
                    'description)))

  (define (check-texinfo-markup package)
    "Check that PACKAGE description can be parsed as a Texinfo fragment."
    (catch 'parser-error
      (lambda () (package-description-string package))
      (lambda (keys . args)
        (emit-warning package (_ "Texinfo markup in description is invalid")))))

  (define (check-proper-start description)
    (unless (or (properly-starts-sentence? description)
                (string-prefix-ci? (package-name package) description))


@@ 170,6 178,7 @@ by two spaces; possible infraction~p at ~{~a~^, ~}")
  (let ((description (package-description package)))
    (when (string? description)
      (check-not-empty description)
      (check-texinfo-markup package)
      (check-proper-start description)
      (check-end-of-sentence-space description))))


M tests/lint.scm => tests/lint.scm +8 -0
@@ 2,6 2,7 @@
;;; Copyright © 2012, 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 142,6 143,13 @@ requests."
                        (check-description-style pkg)))
                    "description should not be empty")))

(test-assert "description: valid Texinfo markup"
  (->bool
   (string-contains
    (with-warnings
      (check-description-style (dummy-package "x" (description "f{oo}b@r"))))
    "Texinfo markup in description is invalid")))

(test-assert "description: does not start with an upper-case letter"
  (->bool
   (string-contains (with-warnings