From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cyril Roelandt Subject: [PATCHv2 3/5] guix lint: check whether descriptions and synopses start with an upper-case letter. Date: Mon, 6 Oct 2014 02:27:13 +0200 Message-ID: <1412555233-10161-1-git-send-email-tipecaml@gmail.com> References: <87iok7afrj.fsf@gnu.org> Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:32957) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xaw9C-0006lh-2i for guix-devel@gnu.org; Sun, 05 Oct 2014 20:27:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xaw92-0004zD-FC for guix-devel@gnu.org; Sun, 05 Oct 2014 20:27:29 -0400 Received: from mail-wg0-x22b.google.com ([2a00:1450:400c:c00::22b]:47198) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xaw92-0004z3-4i for guix-devel@gnu.org; Sun, 05 Oct 2014 20:27:20 -0400 Received: by mail-wg0-f43.google.com with SMTP id m15so5268156wgh.2 for ; Sun, 05 Oct 2014 17:27:19 -0700 (PDT) In-Reply-To: <87iok7afrj.fsf@gnu.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org * guix/scripts/lint.scm (check-description-style, check-synopsis-start-upper-case): New methods. * tests/lint.scm ("description: does not start with an upper-case letter", "synopsis: does not start with an upper-case letter"): New tests. --- guix/scripts/lint.scm | 26 ++++++++++++++++++++++++++ tests/lint.scm | 18 ++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index e8d3707..1124654 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -29,6 +29,7 @@ #:use-module (srfi srfi-11) #:use-module (srfi srfi-37) #:export (guix-lint + check-description-style check-inputs-should-be-native check-patches check-synopsis-style)) @@ -110,6 +111,19 @@ Run a set of checkers on the specified package; if none is specified, run the ch %checkers) (exit 0)) +(define (start-with-capital-letter? s) + (char-set-contains? char-set:upper-case (string-ref s 0))) + +(define (check-description-style package) + ;; Emit a warning if stylistic issues are found in the description of PACKAGE. + (let ((description (package-description package))) + (when (and (string? description) + (not (string-null? description)) + (not (start-with-capital-letter? description))) + (emit-warning package + "description should start with an upper-case letter" + 'description)))) + (define (check-inputs-should-be-native package) ;; Emit a warning if some inputs of PACKAGE are likely to belong to its ;; native inputs. @@ -146,9 +160,17 @@ Run a set of checkers on the specified package; if none is specified, run the ch "synopsis should be less than 80 characters long" 'synopsis))) + (define (check-synopsis-start-upper-case synopsis) + (when (and (not (string-null? synopsis)) + (not (start-with-capital-letter? synopsis))) + (emit-warning package + "synopsis should start with an upper-case letter" + 'synopsis))) + (let ((synopsis (package-synopsis package))) (if (string? synopsis) (begin + (check-synopsis-start-upper-case synopsis) (check-final-period synopsis) (check-start-article synopsis) (check-synopsis-length synopsis))))) @@ -176,6 +198,10 @@ Run a set of checkers on the specified package; if none is specified, run the ch (define %checkers (list (lint-checker + (name "description") + (description "Validate package descriptions") + (check check-description-style)) + (lint-checker (name "inputs-should-be-native") (description "Identify inputs that should be native inputs") (check check-inputs-should-be-native)) diff --git a/tests/lint.scm b/tests/lint.scm index e082908..ceb7abe 100644 --- a/tests/lint.scm +++ b/tests/lint.scm @@ -44,6 +44,24 @@ (thunk)) (get-output-string port))) +(test-assert "description: does not start with an upper-case letter" + (->bool + (string-contains (call-with-warnings + (lambda () + (let ((pkg (dummy-package "x" + (description "bad description.")))) + (check-description-style pkg)))) + "description should start with an upper-case letter"))) + +(test-assert "synopsis: does not start with an upper-case letter" + (->bool + (string-contains (call-with-warnings + (lambda () + (let ((pkg (dummy-package "x" + (synopsis "bad synopsis.")))) + (check-synopsis-style pkg)))) + "synopsis should start with an upper-case letter"))) + (test-assert "synopsis: ends with a period" (->bool (string-contains (call-with-warnings -- 1.8.4.rc3