Mercurial > hg
diff tests/test-notify.t @ 12473:52aac5c5c2a6
tests: unify test-notify
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 26 Sep 2010 13:44:42 -0500 |
parents | tests/test-notify@3b65c3c3cc8d |
children | 6cc4b14fb76b |
line wrap: on
line diff
--- /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)