lint: Add description check for common typos.
Fixes: https://issues.guix.gnu.org/44675 * guix/lint.scm (check-description-typo): Add check for occurences of "This packages", "This modules", "allows to" and "permits to" in package descriptions. * tests/lint.scm: Add tests for "This packages" and "allows to".master
parent
65be27dcfd
commit
b5f45a21c2
|
@ -321,6 +321,21 @@ markup is valid return a plain-text version of DESCRIPTION, otherwise #f."
|
|||
(G_ "Texinfo markup in description is invalid")
|
||||
#:field 'description))))
|
||||
|
||||
(define (check-description-typo description typo-corrections)
|
||||
"Check that DESCRIPTION does not contain typo, with optional correction"
|
||||
(append-map
|
||||
(match-lambda
|
||||
((typo . correction)
|
||||
(if (string-contains description typo)
|
||||
(list
|
||||
(make-warning package
|
||||
(G_
|
||||
(format #false
|
||||
"description contains typo '~a'~@[, should be '~a'~]"
|
||||
typo correction))))
|
||||
'())))
|
||||
typo-corrections))
|
||||
|
||||
(define (check-trademarks description)
|
||||
"Check that DESCRIPTION does not contain '™' or '®' characters. See
|
||||
http://www.gnu.org/prep/standards/html_node/Trademarks.html."
|
||||
|
@ -401,6 +416,10 @@ by two spaces; possible infraction~p at ~{~a~^, ~}")
|
|||
(check-not-empty description)
|
||||
(check-quotes description)
|
||||
(check-trademarks description)
|
||||
(check-description-typo description '(("This packages" . "This package")
|
||||
("This modules" . "This module")
|
||||
("allows to" . #f)
|
||||
("permits to" . #f)))
|
||||
;; Use raw description for this because Texinfo rendering
|
||||
;; automatically fixes end of sentence space.
|
||||
(check-end-of-sentence-space description)
|
||||
|
|
|
@ -177,6 +177,20 @@
|
|||
(description "Whitespace. "))))
|
||||
(check-description-style pkg))))
|
||||
|
||||
(test-equal "description: pluralized 'This package'"
|
||||
"description contains typo 'This packages', should be 'This package'"
|
||||
(single-lint-warning-message
|
||||
(let ((pkg (dummy-package "x"
|
||||
(description "This packages is a typo."))))
|
||||
(check-description-style pkg))))
|
||||
|
||||
(test-equal "description: grammar 'allows to'"
|
||||
"description contains typo 'allows to'"
|
||||
(single-lint-warning-message
|
||||
(let ((pkg (dummy-package "x"
|
||||
(description "This package allows to do stuff."))))
|
||||
(check-description-style pkg))))
|
||||
|
||||
(test-equal "synopsis: not a string"
|
||||
"invalid synopsis: #f"
|
||||
(single-lint-warning-message
|
||||
|
|
Reference in New Issue