unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Cyril Roelandt <tipecaml@gmail.com>
To: guix-devel@gnu.org
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	[thread overview]
Message-ID: <1412555233-10161-1-git-send-email-tipecaml@gmail.com> (raw)
In-Reply-To: <87iok7afrj.fsf@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

  reply	other threads:[~2014-10-06  0:27 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-27 21:49 [PATCH 0/5] Add, fix and improve checkers in guix lint Cyril Roelandt
2014-09-27 21:49 ` [PATCH 1/5] guix lint: make sure check-patches retrieves patch names Cyril Roelandt
2014-09-28 10:08   ` Ludovic Courtès
2014-10-06  0:26     ` [PATCHv2 " Cyril Roelandt
2014-10-06 15:57       ` Ludovic Courtès
2014-09-27 21:49 ` [PATCH 2/5] guix lint: Make sure synopses are not too long Cyril Roelandt
2014-09-28 10:09   ` Ludovic Courtès
2014-09-27 21:49 ` [PATCH 3/5] guix lint: check whether descriptions and synopses start with an upper-case letter Cyril Roelandt
2014-09-28 16:09   ` Ludovic Courtès
2014-10-06  0:27     ` Cyril Roelandt [this message]
2014-10-06 16:00       ` [PATCHv2 " Ludovic Courtès
2014-10-06  0:28     ` [PATCH " Cyril Roelandt
2014-10-06 15:58       ` Ludovic Courtès
2014-09-27 21:49 ` [PATCH 4/5] guix lint: Make sure a synopsis cannot start with a lower-case article Cyril Roelandt
2014-09-28 16:11   ` Ludovic Courtès
2014-10-06  0:28     ` Cyril Roelandt
2014-09-27 21:49 ` [PATCH 5/5] guix lint: make sure synopses do not start with the package name Cyril Roelandt
2014-09-28 16:11   ` Ludovic Courtès
2014-09-28 16:49 ` [PATCH 0/5] Add, fix and improve checkers in guix lint Andreas Enge
2014-10-04 14:25   ` Cyril Roelandt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1412555233-10161-1-git-send-email-tipecaml@gmail.com \
    --to=tipecaml@gmail.com \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).