diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index 350a35222c..237709848f 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -80,6 +80,10 @@ (define (properly-starts-sentence? s) (string-match "^[(\"'[:upper:][:digit:]]" s)) +(define (starts-with-abbreviation? s) + "Return #t if S starts with what looks like an abbreviation or acronym." + (string-match "^[A-Z][A-Z0-9]+\\>" s)) + (define (check-description-style package) ;; Emit a warning if stylistic issues are found in the description of PACKAGE. (define (check-not-empty description) @@ -180,7 +184,8 @@ line." 'synopsis))) (define (check-start-with-package-name synopsis) - (when (regexp-exec (package-name-regexp package) synopsis) + (when (and (regexp-exec (package-name-regexp package) synopsis) + (not (starts-with-abbreviation? synopsis))) (emit-warning package "synopsis should not start with the package name" 'synopsis))) diff --git a/tests/lint.scm b/tests/lint.scm index 9a043c4b59..e77d443264 100644 --- a/tests/lint.scm +++ b/tests/lint.scm @@ -202,6 +202,16 @@ (synopsis "Arbitrary precision")))) (check-synopsis-style pkg)))))) +(test-assert "synopsis: start with abbreviation" + (string-null? + (call-with-warnings + (lambda () + (let ((pkg (dummy-package "uucp" + ;; Same problem with "APL interpreter", etc. + (synopsis "UUCP implementation") + (description "Imagine this is Taylor UUCP.")))) + (check-synopsis-style pkg)))))) + (test-assert "inputs: pkg-config is probably a native input" (->bool (string-contains