tests: extend check-commit self-tests
authorMatt Mackall <mpm@selenic.com>
Fri, 08 Jan 2016 12:07:15 -0600
changeset 27700 374fad80ce69
parent 27699 c8d3392f76e1
child 27701 4571c0b38337
tests: extend check-commit self-tests This now contains both positive and negative tests for almost all the check-commit rules.
tests/test-contrib-check-commit.t
--- a/tests/test-contrib-check-commit.t	Thu Jan 07 14:57:57 2016 -0600
+++ b/tests/test-contrib-check-commit.t	Fri Jan 08 12:07:15 2016 -0600
@@ -1,7 +1,7 @@
 Test the 'check-commit' script
 ==============================
 
-Test long lines in header (should not be reported as too long description)
+A fine patch:
 
   $ cat > patch-with-long-header.diff << EOF
   > # HG changeset patch
@@ -11,7 +11,36 @@
   > # Node ID c41cb6d2b7dbd62b1033727f8606b8c09fc4aa88
   > # Parent  42aa0e570eaa364a622bc4443b0bcb79b1100a58
   > # ClownJoke This is a veryly long header that should not be warned about because its not the description
-  > transplant: use Oxford comma
+  > bundle2: use Oxford comma (issue123) (BC)
+  > 
+  > diff --git a/hgext/transplant.py b/hgext/transplant.py
+  > --- a/hgext/transplant.py
+  > +++ b/hgext/transplant.py
+  > @@ -599,7 +599,7 @@
+  >              return
+  >          if not (opts.get('source') or revs or
+  >                  opts.get('merge') or opts.get('branch')):
+  > -            raise error.Abort(_('no source URL, branch revision or revision '
+  > +            raise error.Abort(_('no source URL, branch revision, or revision '
+  >                                 'list provided'))
+  >          if opts.get('all'):
+  > 
+  > + def blahblah(x):
+  > +     pass
+  > EOF
+  $ cat patch-with-long-header.diff | $TESTDIR/../contrib/check-commit
+
+A patch with lots of errors:
+
+  $ cat > patch-with-long-header.diff << EOF
+  > # HG changeset patch
+  > # User timeless
+  > # Date 1448911706 0
+  > #      Mon Nov 30 19:28:26 2015 +0000
+  > # Node ID c41cb6d2b7dbd62b1033727f8606b8c09fc4aa88
+  > # Parent  42aa0e570eaa364a622bc4443b0bcb79b1100a58
+  > # ClownJoke This is a veryly long header that should not be warned about because its not the description
+  > transplant/foo: this summary is way too long use Oxford comma (bc) (bug123) (issue 244)
   > 
   > diff --git a/hgext/transplant.py b/hgext/transplant.py
   > --- a/hgext/transplant.py
@@ -26,3 +55,57 @@
   >          if opts.get('all'):
   > EOF
   $ cat patch-with-long-header.diff | $TESTDIR/../contrib/check-commit
+  7: (BC) needs to be uppercase
+   transplant/foo: this summary is way too long use Oxford comma (bc) (bug123) (issue 244)
+  7: no space allowed between issue and number
+   transplant/foo: this summary is way too long use Oxford comma (bc) (bug123) (issue 244)
+  7: use (issueDDDD) instead of bug
+   transplant/foo: this summary is way too long use Oxford comma (bc) (bug123) (issue 244)
+  1: username is not an email address
+   # User timeless
+  7: summary keyword should be most user-relevant one-word command or topic
+   transplant/foo: this summary is way too long use Oxford comma (bc) (bug123) (issue 244)
+  7: summary line too long (limit is 78)
+   transplant/foo: this summary is way too long use Oxford comma (bc) (bug123) (issue 244)
+  [1]
+
+A patch with other errors:
+
+  $ cat > patch-with-long-header.diff << EOF
+  > # HG changeset patch
+  > # User timeless
+  > # Date 1448911706 0
+  > #      Mon Nov 30 19:28:26 2015 +0000
+  > # Node ID c41cb6d2b7dbd62b1033727f8606b8c09fc4aa88
+  > # Parent  42aa0e570eaa364a622bc4443b0bcb79b1100a58
+  > # ClownJoke This is a veryly long header that should not be warned about because its not the description
+  > This has no topic and ends with a period.
+  > 
+  > diff --git a/hgext/transplant.py b/hgext/transplant.py
+  > --- a/hgext/transplant.py
+  > +++ b/hgext/transplant.py
+  > @@ -599,7 +599,7 @@
+  >          if opts.get('all'):
+  >  
+  > +
+  > + def blah_blah(x):
+  > +     pass
+  > +
+  >  
+  > EOF
+  $ cat patch-with-long-header.diff | $TESTDIR/../contrib/check-commit
+  1: username is not an email address
+   # User timeless
+  7: summary line doesn't start with 'topic: '
+   This has no topic and ends with a period.
+  7: don't capitalize summary lines
+   This has no topic and ends with a period.
+  7: don't add trailing period on summary line
+   This has no topic and ends with a period.
+  19: adds double empty line
+    
+  15: adds double empty line
+   +
+  16: adds a function with foo_bar naming
+   + def blah_blah(x):
+  [1]