mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-01-18 13:36:36 +01:00
lint: Refine description start check logic.
Fix linter warnings for the following: - packages that belong to some programming language or ecosystem, e.g. python-foo or texlive-bar, - packages whose names end in a version distinction, e.g. wlroots-0.16 and - packages where the software's real name contains an underscore `_' character where our package name replaced that with a hyphen `-', e.g. wpa_supplicant and wpa-supplicant-minimal. * guix/lint.scm (check-description-style)[check-proper-start]: Add conditions. * tests/lint.scm: New tests. Change-Id: Ifc9f5cda04db59e460e287cd93afae89c7f17e3c Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
dac3011477
commit
00879f94ee
2 changed files with 43 additions and 9 deletions
|
@ -14,6 +14,7 @@
|
|||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;; Copyright © 2021-2023 Maxime Devos <maximedevos@telenet.be>
|
||||
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
|
||||
;;; Copyright © 2024 Gabriel Wicki <gabriel@erlikon.ch>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -437,15 +438,23 @@ (define (check-quotes description)
|
|||
'()))
|
||||
|
||||
(define (check-proper-start description)
|
||||
(if (or (string-null? description)
|
||||
(properly-starts-sentence? description)
|
||||
(string-prefix-ci? (package-name package) description))
|
||||
'()
|
||||
(list
|
||||
(make-warning
|
||||
package
|
||||
(G_ "description should start with an upper-case letter or digit")
|
||||
#:field 'description))))
|
||||
(let* ((initial
|
||||
(string-take description
|
||||
(or (string-index description #\space)
|
||||
0)))
|
||||
(first-word
|
||||
(regexp-substitute/global #f "_" initial
|
||||
'pre "-" 'post)))
|
||||
(if (or (string-null? description)
|
||||
(properly-starts-sentence? description)
|
||||
(string-prefix-ci? first-word (package-name package))
|
||||
(string-suffix-ci? first-word (package-name package)))
|
||||
'()
|
||||
(list
|
||||
(make-warning
|
||||
package
|
||||
(G_ "description should start with an upper-case letter or digit")
|
||||
#:field 'description)))))
|
||||
|
||||
(define (check-end-of-sentence-space description)
|
||||
"Check that an end-of-sentence period is followed by two spaces."
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;; Copyright © 2021, 2023 Maxime Devos <maximedevos@telenet.be>
|
||||
;;; Copyright © 2024 Gabriel Wicki <gabriel@erlikon.ch>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -132,6 +133,30 @@ (define (warning-contains? str warnings)
|
|||
(description "x is a dummy package."))))
|
||||
(check-description-style pkg)))
|
||||
|
||||
(test-equal "description: may start with beginning of package name"
|
||||
'()
|
||||
(let ((pkg (dummy-package "xyz-0.1"
|
||||
(description "xyz is a dummy package."))))
|
||||
(check-description-style pkg)))
|
||||
|
||||
(test-equal "description: may start with end of package name"
|
||||
'()
|
||||
(let ((pkg (dummy-package "foobar-xyz"
|
||||
(description "xyz is a dummy package."))))
|
||||
(check-description-style pkg)))
|
||||
|
||||
(test-equal "description: may start with non-hyphenated package name"
|
||||
'()
|
||||
(let ((pkg (dummy-package "foobar-xyz-minimal"
|
||||
(description "foobar_xyz is a dummy package."))))
|
||||
(check-description-style pkg)))
|
||||
|
||||
(test-equal "description: may start with end of package name"
|
||||
'()
|
||||
(let ((pkg (dummy-package "foo-bar"
|
||||
(description "bar is some thing in foo."))))
|
||||
(check-description-style pkg)))
|
||||
|
||||
(test-equal "description: two spaces after end of sentence"
|
||||
"sentences in description should be followed by two spaces; possible infraction at 3"
|
||||
(single-lint-warning-message
|
||||
|
|
Loading…
Reference in a new issue