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".
This commit is contained in:
Vagrant Cascadian 2021-10-24 04:00:15 -07:00
parent 65be27dcfd
commit b5f45a21c2
No known key found for this signature in database
GPG Key ID: DC518FC87F9716AA
2 changed files with 33 additions and 0 deletions

View File

@ -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)

View File

@ -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