From 15a6d433ff33c44ffef406ad77e196d6a5ef0822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 7 Nov 2014 17:44:30 +0100 Subject: [PATCH] lint: Allow synopses that start with an abbreviation. * guix/scripts/lint.scm (starts-with-abbreviation?): New procedure. (check-synopsis-style)[check-start-with-package-name]: Use it. * tests/lint.scm ("synopsis: start with abbreviation"): New test. --- guix/scripts/lint.scm | 7 ++++++- tests/lint.scm | 10 ++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) 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