diff options
| -rw-r--r-- | guix/scripts/lint.scm | 7 | ||||
| -rw-r--r-- | tests/lint.scm | 10 |
2 files changed, 16 insertions, 1 deletions
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index 350a35222cf..237709848f9 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm | |||
| @@ -80,6 +80,10 @@ | |||
| 80 | (define (properly-starts-sentence? s) | 80 | (define (properly-starts-sentence? s) |
| 81 | (string-match "^[(\"'[:upper:][:digit:]]" s)) | 81 | (string-match "^[(\"'[:upper:][:digit:]]" s)) |
| 82 | 82 | ||
| 83 | (define (starts-with-abbreviation? s) | ||
| 84 | "Return #t if S starts with what looks like an abbreviation or acronym." | ||
| 85 | (string-match "^[A-Z][A-Z0-9]+\\>" s)) | ||
| 86 | |||
| 83 | (define (check-description-style package) | 87 | (define (check-description-style package) |
| 84 | ;; Emit a warning if stylistic issues are found in the description of PACKAGE. | 88 | ;; Emit a warning if stylistic issues are found in the description of PACKAGE. |
| 85 | (define (check-not-empty description) | 89 | (define (check-not-empty description) |
| @@ -180,7 +184,8 @@ line." | |||
| 180 | 'synopsis))) | 184 | 'synopsis))) |
| 181 | 185 | ||
| 182 | (define (check-start-with-package-name synopsis) | 186 | (define (check-start-with-package-name synopsis) |
| 183 | (when (regexp-exec (package-name-regexp package) synopsis) | 187 | (when (and (regexp-exec (package-name-regexp package) synopsis) |
| 188 | (not (starts-with-abbreviation? synopsis))) | ||
| 184 | (emit-warning package | 189 | (emit-warning package |
| 185 | "synopsis should not start with the package name" | 190 | "synopsis should not start with the package name" |
| 186 | 'synopsis))) | 191 | 'synopsis))) |
diff --git a/tests/lint.scm b/tests/lint.scm index 9a043c4b59a..e77d443264a 100644 --- a/tests/lint.scm +++ b/tests/lint.scm | |||
| @@ -202,6 +202,16 @@ | |||
| 202 | (synopsis "Arbitrary precision")))) | 202 | (synopsis "Arbitrary precision")))) |
| 203 | (check-synopsis-style pkg)))))) | 203 | (check-synopsis-style pkg)))))) |
| 204 | 204 | ||
| 205 | (test-assert "synopsis: start with abbreviation" | ||
| 206 | (string-null? | ||
| 207 | (call-with-warnings | ||
| 208 | (lambda () | ||
| 209 | (let ((pkg (dummy-package "uucp" | ||
| 210 | ;; Same problem with "APL interpreter", etc. | ||
| 211 | (synopsis "UUCP implementation") | ||
| 212 | (description "Imagine this is Taylor UUCP.")))) | ||
| 213 | (check-synopsis-style pkg)))))) | ||
| 214 | |||
| 205 | (test-assert "inputs: pkg-config is probably a native input" | 215 | (test-assert "inputs: pkg-config is probably a native input" |
| 206 | (->bool | 216 | (->bool |
| 207 | (string-contains | 217 | (string-contains |
