tests: unify test-notify
authorMatt Mackall <mpm@selenic.com>
Sun, 26 Sep 2010 13:44:42 -0500
changeset 12473 52aac5c5c2a6
parent 12472 17c62039cadd
child 12474 f213af8211cc
tests: unify test-notify
tests/test-notify
tests/test-notify.out
tests/test-notify.t
--- a/tests/test-notify	Sun Sep 26 13:43:21 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-#!/bin/sh
-
-cat <<EOF >> $HGRCPATH
-[extensions]
-notify=
-
-[hooks]
-incoming.notify = python:hgext.notify.hook
-
-[notify]
-sources = pull
-diffstat = False
-
-[usersubs]
-foo@bar = *
-
-[reposubs]
-* = baz
-EOF
-
-hg help notify
-hg init a
-echo a > a/a
-echo % commit
-hg --traceback --cwd a commit -Ama -d '0 0'
-
-echo % clone
-hg --traceback clone a b
-
-echo a >> a/a
-echo % commit
-hg --traceback --cwd a commit -Amb -d '1 0'
-
-# on Mac OS X 10.5 the tmp path is very long so would get stripped in the subject line
-cat <<EOF >> $HGRCPATH
-[notify]
-maxsubject = 200
-EOF
-
-# the python call below wraps continuation lines, which appear on Mac OS X 10.5 because
-# of the very long subject line
-echo '% pull (minimal config)'
-hg --traceback --cwd b pull ../a 2>&1 |
-  python -c 'import sys,re; print re.sub("([n:])\\n[\\t ]", "\\1 ", sys.stdin.read()),' |
-  sed -e 's/\(Message-Id:\).*/\1/' \
-  -e 's/changeset \([0-9a-f]* *\)in .*test-notif/changeset \1in test-notif/' \
-  -e 's/^details: .*test-notify/details: test-notify/' \
-  -e 's/^Date:.*/Date:/'
-
-cat <<EOF >> $HGRCPATH
-[notify]
-config = $HGTMP/.notify.conf
-domain = test.com
-strip = 3
-template = Subject: {desc|firstline|strip}\nFrom: {author}\nX-Test: foo\n\nchangeset {node|short} in {webroot}\ndescription:\n\t{desc|tabindent|strip}
-
-[web]
-baseurl = http://test/
-EOF
-
-echo % fail for config file is missing
-hg --cwd b rollback
-hg --cwd b pull ../a 2>&1 | grep 'error.*\.notify\.conf' > /dev/null && echo pull failed
-
-touch "$HGTMP/.notify.conf"
-
-echo % pull
-hg --cwd b rollback
-hg --traceback --cwd b pull ../a 2>&1 | sed -e 's/\(Message-Id:\).*/\1/' \
-  -e 's/changeset \([0-9a-f]*\) in .*/changeset \1/' \
-  -e 's/^Date:.*/Date:/'
-
-cat << EOF >> $HGRCPATH
-[hooks]
-incoming.notify = python:hgext.notify.hook
-
-[notify]
-sources = pull
-diffstat = True
-EOF
-
-echo % pull
-hg --cwd b rollback
-hg --traceback --cwd b pull ../a 2>&1 | sed -e 's/\(Message-Id:\).*/\1/' \
-  -e 's/changeset \([0-9a-f]*\) in .*/changeset \1/' \
-  -e 's/^Date:.*/Date:/'
-
-echo % test merge
-cd a
-hg up -C 0
-echo a >> a
-hg ci -Am adda2 -d '2 0'
-hg merge
-hg ci -m merge -d '3 0'
-cd ..
-
-hg --traceback --cwd b pull ../a 2>&1 | sed -e 's/\(Message-Id:\).*/\1/' \
-  -e 's/changeset \([0-9a-f]*\) in .*/changeset \1/' \
-  -e 's/^Date:.*/Date:/'
-
--- a/tests/test-notify.out	Sun Sep 26 13:43:21 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,219 +0,0 @@
-notify extension - hooks for sending email notifications at commit/push time
-
-Subscriptions can be managed through a hgrc file. Default mode is to print
-messages to stdout, for testing and configuring.
-
-To use, configure the notify extension and enable it in hgrc like this:
-
-  [extensions]
-  notify =
-
-  [hooks]
-  # one email for each incoming changeset
-  incoming.notify = python:hgext.notify.hook
-  # batch emails when many changesets incoming at one time
-  changegroup.notify = python:hgext.notify.hook
-
-  [notify]
-  # config items go here
-
-Required configuration items:
-
-  config = /path/to/file # file containing subscriptions
-
-Optional configuration items:
-
-  test = True            # print messages to stdout for testing
-  strip = 3              # number of slashes to strip for url paths
-  domain = example.com   # domain to use if committer missing domain
-  style = ...            # style file to use when formatting email
-  template = ...         # template to use when formatting email
-  incoming = ...         # template to use when run as incoming hook
-  changegroup = ...      # template when run as changegroup hook
-  maxdiff = 300          # max lines of diffs to include (0=none, -1=all)
-  maxsubject = 67        # truncate subject line longer than this
-  diffstat = True        # add a diffstat before the diff content
-  sources = serve        # notify if source of incoming changes in this list
-                         # (serve == ssh or http, push, pull, bundle)
-  merge = False          # send notification for merges (default True)
-  [email]
-  from = user@host.com   # email address to send as if none given
-  [web]
-  baseurl = http://hgserver/... # root of hg web site for browsing commits
-
-The notify config file has same format as a regular hgrc file. It has two
-sections so you can express subscriptions in whatever way is handier for you.
-
-  [usersubs]
-  # key is subscriber email, value is ","-separated list of glob patterns
-  user@host = pattern
-
-  [reposubs]
-  # key is glob pattern, value is ","-separated list of subscriber emails
-  pattern = user@host
-
-Glob patterns are matched against path to repository root.
-
-If you like, you can put notify config file in repository that users can push
-changes to, they can manage their own subscriptions.
-
-no commands defined
-% commit
-adding a
-% clone
-updating to branch default
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-% commit
-% pull (minimal config)
-pulling from ../a
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Date:
-Subject: changeset in test-notify/b: b
-From: test
-X-Hg-Notification: changeset 0647d048b600
-Message-Id:
-To: baz, foo@bar
-
-changeset 0647d048b600 in test-notify/b
-details: test-notify/b?cmd=changeset;node=0647d048b600
-description: b
-
-diffs (6 lines):
-
-diff -r cb9a9f314b8b -r 0647d048b600 a
---- a/a	Thu Jan 01 00:00:00 1970 +0000
-+++ b/a	Thu Jan 01 00:00:01 1970 +0000
-@@ -1,1 +1,2 @@
- a
-+a
-(run 'hg update' to get a working copy)
-% fail for config file is missing
-rolling back to revision 0 (undo pull)
-pull failed
-% pull
-rolling back to revision 0 (undo pull)
-pulling from ../a
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Test: foo
-Date:
-Subject: b
-From: test@test.com
-X-Hg-Notification: changeset 0647d048b600
-Message-Id:
-To: baz@test.com, foo@bar
-
-changeset 0647d048b600
-description:
-	b
-diffs (6 lines):
-
-diff -r cb9a9f314b8b -r 0647d048b600 a
---- a/a	Thu Jan 01 00:00:00 1970 +0000
-+++ b/a	Thu Jan 01 00:00:01 1970 +0000
-@@ -1,1 +1,2 @@
- a
-+a
-(run 'hg update' to get a working copy)
-% pull
-rolling back to revision 0 (undo pull)
-pulling from ../a
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 1 changesets with 1 changes to 1 files
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Test: foo
-Date:
-Subject: b
-From: test@test.com
-X-Hg-Notification: changeset 0647d048b600
-Message-Id:
-To: baz@test.com, foo@bar
-
-changeset 0647d048b600
-description:
-	b
-diffstat:
-
- a |  1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diffs (6 lines):
-
-diff -r cb9a9f314b8b -r 0647d048b600 a
---- a/a	Thu Jan 01 00:00:00 1970 +0000
-+++ b/a	Thu Jan 01 00:00:01 1970 +0000
-@@ -1,1 +1,2 @@
- a
-+a
-(run 'hg update' to get a working copy)
-% test merge
-1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-created new head
-0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-(branch merge, don't forget to commit)
-pulling from ../a
-searching for changes
-adding changesets
-adding manifests
-adding file changes
-added 2 changesets with 0 changes to 0 files
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Test: foo
-Date:
-Subject: adda2
-From: test@test.com
-X-Hg-Notification: changeset 0a184ce6067f
-Message-Id:
-To: baz@test.com, foo@bar
-
-changeset 0a184ce6067f
-description:
-	adda2
-diffstat:
-
- a |  1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-diffs (6 lines):
-
-diff -r cb9a9f314b8b -r 0a184ce6067f a
---- a/a	Thu Jan 01 00:00:00 1970 +0000
-+++ b/a	Thu Jan 01 00:00:02 1970 +0000
-@@ -1,1 +1,2 @@
- a
-+a
-Content-Type: text/plain; charset="us-ascii"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Test: foo
-Date:
-Subject: merge
-From: test@test.com
-X-Hg-Notification: changeset 22c88b85aa27
-Message-Id:
-To: baz@test.com, foo@bar
-
-changeset 22c88b85aa27
-description:
-	merge
-(run 'hg update' to get a working copy)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-notify.t	Sun Sep 26 13:44:42 2010 -0500
@@ -0,0 +1,305 @@
+
+  $ cat <<EOF >> $HGRCPATH
+  > [extensions]
+  > notify=
+  > 
+  > [hooks]
+  > incoming.notify = python:hgext.notify.hook
+  > 
+  > [notify]
+  > sources = pull
+  > diffstat = False
+  > 
+  > [usersubs]
+  > foo@bar = *
+  > 
+  > [reposubs]
+  > * = baz
+  > EOF
+  $ hg help notify
+  notify extension - hooks for sending email notifications at commit/push time
+  
+  Subscriptions can be managed through a hgrc file. Default mode is to print
+  messages to stdout, for testing and configuring.
+  
+  To use, configure the notify extension and enable it in hgrc like this:
+  
+    [extensions]
+    notify =
+  
+    [hooks]
+    # one email for each incoming changeset
+    incoming.notify = python:hgext.notify.hook
+    # batch emails when many changesets incoming at one time
+    changegroup.notify = python:hgext.notify.hook
+  
+    [notify]
+    # config items go here
+  
+  Required configuration items:
+  
+    config = /path/to/file # file containing subscriptions
+  
+  Optional configuration items:
+  
+    test = True            # print messages to stdout for testing
+    strip = 3              # number of slashes to strip for url paths
+    domain = example.com   # domain to use if committer missing domain
+    style = ...            # style file to use when formatting email
+    template = ...         # template to use when formatting email
+    incoming = ...         # template to use when run as incoming hook
+    changegroup = ...      # template when run as changegroup hook
+    maxdiff = 300          # max lines of diffs to include (0=none, -1=all)
+    maxsubject = 67        # truncate subject line longer than this
+    diffstat = True        # add a diffstat before the diff content
+    sources = serve        # notify if source of incoming changes in this list
+                           # (serve == ssh or http, push, pull, bundle)
+    merge = False          # send notification for merges (default True)
+    [email]
+    from = user@host.com   # email address to send as if none given
+    [web]
+    baseurl = http://hgserver/... # root of hg web site for browsing commits
+  
+  The notify config file has same format as a regular hgrc file. It has two
+  sections so you can express subscriptions in whatever way is handier for you.
+  
+    [usersubs]
+    # key is subscriber email, value is ","-separated list of glob patterns
+    user@host = pattern
+  
+    [reposubs]
+    # key is glob pattern, value is ","-separated list of subscriber emails
+    pattern = user@host
+  
+  Glob patterns are matched against path to repository root.
+  
+  If you like, you can put notify config file in repository that users can push
+  changes to, they can manage their own subscriptions.
+  
+  no commands defined
+  $ hg init a
+  $ echo a > a/a
+
+commit
+
+  $ hg --cwd a commit -Ama -d '0 0'
+  adding a
+
+
+clone
+
+  $ hg --traceback clone a b
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ echo a >> a/a
+
+commit
+
+  $ hg --traceback --cwd a commit -Amb -d '1 0'
+
+on Mac OS X 10.5 the tmp path is very long so would get stripped in the subject line
+
+  $ cat <<EOF >> $HGRCPATH
+  > [notify]
+  > maxsubject = 200
+  > EOF
+
+the python call below wraps continuation lines, which appear on Mac OS X 10.5 because
+of the very long subject line
+pull (minimal config)
+
+  $ hg --traceback --cwd b pull ../a | \
+  >   python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),'
+  pulling from ../a
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  Content-Type: text/plain; charset="us-ascii"
+  MIME-Version: 1.0
+  Content-Transfer-Encoding: 7bit
+  Date: * (glob)
+  Subject: changeset in */b: b (glob)
+  From: test
+  X-Hg-Notification: changeset 0647d048b600
+  Message-Id: <*> (glob)
+  To: baz, foo@bar
+  
+  changeset 0647d048b600 in */b (glob)
+  details: *?cmd=changeset;node=0647d048b600 (glob)
+  description: b
+  
+  diffs (6 lines):
+  
+  diff -r cb9a9f314b8b -r 0647d048b600 a
+  --- a/a	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a	Thu Jan 01 00:00:01 1970 +0000
+  @@ -1,1 +1,2 @@
+   a
+  +a
+  (run 'hg update' to get a working copy)
+  $ cat <<EOF >> $HGRCPATH
+  > [notify]
+  > config = $HGTMP/.notify.conf
+  > domain = test.com
+  > strip = 3
+  > template = Subject: {desc|firstline|strip}\nFrom: {author}\nX-Test: foo\n\nchangeset {node|short} in {webroot}\ndescription:\n\t{desc|tabindent|strip}
+  > 
+  > [web]
+  > baseurl = http://test/
+  > EOF
+
+fail for config file is missing
+
+  $ hg --cwd b rollback
+  rolling back to revision 0 (undo pull)
+  $ hg --cwd b pull ../a 2>&1 | grep 'error.*\.notify\.conf' > /dev/null && echo pull failed
+  pull failed
+  $ touch "$HGTMP/.notify.conf"
+
+pull
+
+  $ hg --cwd b rollback
+  rolling back to revision 0 (undo pull)
+  $ hg --traceback --cwd b pull ../a  | \
+  >   python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),'
+  pulling from ../a
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  Content-Type: text/plain; charset="us-ascii"
+  MIME-Version: 1.0
+  Content-Transfer-Encoding: 7bit
+  X-Test: foo
+  Date: * (glob)
+  Subject: b
+  From: test@test.com
+  X-Hg-Notification: changeset 0647d048b600
+  Message-Id: <*> (glob)
+  To: baz@test.com, foo@bar
+  
+  changeset 0647d048b600 in */b (glob)
+  description: b
+  diffs (6 lines):
+  
+  diff -r cb9a9f314b8b -r 0647d048b600 a
+  --- a/a	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a	Thu Jan 01 00:00:01 1970 +0000
+  @@ -1,1 +1,2 @@
+   a
+  +a
+  (run 'hg update' to get a working copy)
+
+  $ cat << EOF >> $HGRCPATH
+  > [hooks]
+  > incoming.notify = python:hgext.notify.hook
+  > 
+  > [notify]
+  > sources = pull
+  > diffstat = True
+  > EOF
+
+pull
+
+  $ hg --cwd b rollback
+  rolling back to revision 0 (undo pull)
+  $ hg --traceback --cwd b pull ../a | \
+  >   python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),'
+  pulling from ../a
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  Content-Type: text/plain; charset="us-ascii"
+  MIME-Version: 1.0
+  Content-Transfer-Encoding: 7bit
+  X-Test: foo
+  Date: * (glob)
+  Subject: b
+  From: test@test.com
+  X-Hg-Notification: changeset 0647d048b600
+  Message-Id: <*> (glob)
+  To: baz@test.com, foo@bar
+  
+  changeset 0647d048b600 in */b (glob)
+  description: b
+  diffstat:
+  
+   a |  1 +
+   1 files changed, 1 insertions(+), 0 deletions(-)
+  
+  diffs (6 lines):
+  
+  diff -r cb9a9f314b8b -r 0647d048b600 a
+  --- a/a	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a	Thu Jan 01 00:00:01 1970 +0000
+  @@ -1,1 +1,2 @@
+   a
+  +a
+  (run 'hg update' to get a working copy)
+
+test merge
+
+  $ cd a
+  $ hg up -C 0
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ echo a >> a
+  $ hg ci -Am adda2 -d '2 0'
+  created new head
+  $ hg merge
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg ci -m merge -d '3 0'
+  $ cd ..
+  $ hg --traceback --cwd b pull ../a | \
+  >   python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),'
+  pulling from ../a
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 2 changesets with 0 changes to 0 files
+  Content-Type: text/plain; charset="us-ascii"
+  MIME-Version: 1.0
+  Content-Transfer-Encoding: 7bit
+  X-Test: foo
+  Date: * (glob)
+  Subject: adda2
+  From: test@test.com
+  X-Hg-Notification: changeset 0a184ce6067f
+  Message-Id: <*> (glob)
+  To: baz@test.com, foo@bar
+  
+  changeset 0a184ce6067f in */b (glob)
+  description: adda2
+  diffstat:
+  
+   a |  1 +
+   1 files changed, 1 insertions(+), 0 deletions(-)
+  
+  diffs (6 lines):
+  
+  diff -r cb9a9f314b8b -r 0a184ce6067f a
+  --- a/a	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/a	Thu Jan 01 00:00:02 1970 +0000
+  @@ -1,1 +1,2 @@
+   a
+  +a
+  Content-Type: text/plain; charset="us-ascii"
+  MIME-Version: 1.0
+  Content-Transfer-Encoding: 7bit
+  X-Test: foo
+  Date: * (glob)
+  Subject: merge
+  From: test@test.com
+  X-Hg-Notification: changeset 22c88b85aa27
+  Message-Id: <*> (glob)
+  To: baz@test.com, foo@bar
+  
+  changeset 22c88b85aa27 in */b (glob)
+  description: merge
+  (run 'hg update' to get a working copy)