[PATCH 4 of 5 RFC v2] tests: require regexes in unified tests to be marked with " (re)"

Brodie Rao brodie at bitheap.org
Wed Sep 22 16:11:17 CDT 2010


# HG changeset patch
# User Brodie Rao <brodie at bitheap.org>
# Date 1285189560 18000
# Node ID e9edab4d5810f8f3683c0f522b03d99f4e23e910
# Parent  7bbb17c78894015db067a7a3fec3fb6ddef440ec
tests: require regexes in unified tests to be marked with " (re)"

Consider this test:

  $ hg glog --template '{rev}:{node|short} "{desc}"\n'
  @  2:20c4f79fd7ac "3"
  |
  | o  1:38f24201dcab "2"
  |/
  o  0:2a18120dc1c9 "1"

Because each line beginning with "|" can be compiled as a regular
expression (equivalent to ".*|"), they will match any output.

Similarly:

  $ echo foo


The blank output line can be compiled as a regular expression and will
also match any output.

With this patch, none of the above output lines will be matched as
regular expressions. A line must end in " (re)" in order to be matched
as one.

Lines are still matched literally first, so the following will pass:

  $ echo 'foo (re)'
  foo (re)

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -503,9 +503,6 @@ def tsttest(test, options):
 
     def rematch(el, l):
         try:
-            # hack to deal with graphlog, which looks like bogus regexes
-            if el.startswith('|'):
-                el = '\\' + el
             # ensure that the regex matches to the end of the string
             return re.match(el + r'\Z', l)
         except re.error:
@@ -531,10 +528,10 @@ def tsttest(test, options):
 
             if el == l: # perfect match (fast)
                 postout.append("  " + l)
-            elif el and el[2:] and rematch(el, l): # fallback regex match
-                postout.append("  " + el)
-            else: # mismatch - let diff deal with it
-                postout.append("  " + l)
+            elif el and el.endswith(" (re)\n") and rematch(el[:-6] + '\n', l):
+                postout.append("  " + el) # fallback regex match
+            else:
+                postout.append("  " + l) # let diff deal with it
 
     if pos in after:
         postout += after.pop(pos)
diff --git a/tests/test-archive.t b/tests/test-archive.t
--- a/tests/test-archive.t
+++ b/tests/test-archive.t
@@ -227,9 +227,9 @@ old file -- date clamped to 1980
   $ hg archive ../old.zip
   $ unzip -l ../old.zip
   Archive:  ../old.zip
-  \s*Length.*
-  .*-----.*
-  .*147.*80.*00:00.*old/\.hg_archival\.txt
-  .*0.*80.*00:00.*old/old
-  .*-----.*
-  \s*147\s+2 files
+  \s*Length.* (re)
+  .*-----.* (re)
+  .*147.*80.*00:00.*old/\.hg_archival\.txt (re)
+  .*0.*80.*00:00.*old/old (re)
+  .*-----.* (re)
+  \s*147\s+2 files (re)
diff --git a/tests/test-audit-path.t b/tests/test-audit-path.t
--- a/tests/test-audit-path.t
+++ b/tests/test-audit-path.t
@@ -78,5 +78,5 @@ attack /tmp/test
   $ hg manifest -r4
   /tmp/test
   $ hg update -Cr4
-  abort: No such file or directory: .*/test-audit-path\.t/target//tmp/test
+  abort: No such file or directory: .*/test-audit-path\.t/target//tmp/test (re)
   [255]
diff --git a/tests/test-bad-extension.t b/tests/test-bad-extension.t
--- a/tests/test-bad-extension.t
+++ b/tests/test-bad-extension.t
@@ -8,8 +8,8 @@
   $ echo "badext2 =" >> $HGRCPATH
 
   $ hg -q help help
-  \*\*\* failed to import extension badext from .*/badext.py: bit bucket overflow
-  \*\*\* failed to import extension badext2: No module named badext2
+  \*\*\* failed to import extension badext from .*/badext.py: bit bucket overflow (re)
+  *** failed to import extension badext2: No module named badext2
   hg help [TOPIC]
   
   show help for a given topic or a help overview
diff --git a/tests/test-bad-pull.t b/tests/test-bad-pull.t
--- a/tests/test-bad-pull.t
+++ b/tests/test-bad-pull.t
@@ -24,7 +24,7 @@ give the server some time to start runni
   $ sleep 1
 
   $ hg clone http://localhost:$HGPORT/foo copy2 2>&1
-  abort: HTTP Error 404: .*
+  abort: HTTP Error 404: .* (re)
   [255]
 
   $ kill $!
diff --git a/tests/test-bookmarks-rebase.t b/tests/test-bookmarks-rebase.t
--- a/tests/test-bookmarks-rebase.t
+++ b/tests/test-bookmarks-rebase.t
@@ -37,7 +37,7 @@ bookmark list
 rebase
 
   $ hg rebase -s two -d one
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
 
   $ hg log
   changeset:   3:9163974d1cb5
diff --git a/tests/test-bookmarks-strip.t b/tests/test-bookmarks-strip.t
--- a/tests/test-bookmarks-strip.t
+++ b/tests/test-bookmarks-strip.t
@@ -50,7 +50,7 @@ bookmarks updated?
 strip to revision 1
 
   $ hg strip 1
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
 
 list bookmarks
 
diff --git a/tests/test-clone.t b/tests/test-clone.t
--- a/tests/test-clone.t
+++ b/tests/test-clone.t
@@ -80,7 +80,7 @@ Check that path aliases are expanded:
 
   $ hg clone -q -U --config 'paths.foobar=a#0' foobar f
   $ hg -R f showconfig paths.default
-  .*/a#0
+  .*/a#0 (re)
 
 Use --pull:
 
diff --git a/tests/test-committer.t b/tests/test-committer.t
--- a/tests/test-committer.t
+++ b/tests/test-committer.t
@@ -53,7 +53,7 @@
   [255]
   $ rm .hg/hgrc
   $ hg commit -m commit-1 2>&1
-  No username found, using '[^']*' instead
+  No username found, using '[^']*' instead (re)
 
   $ echo space > asdf
   $ hg commit -u ' ' -m commit-1
diff --git a/tests/test-default-push.t b/tests/test-default-push.t
--- a/tests/test-default-push.t
+++ b/tests/test-default-push.t
@@ -18,7 +18,7 @@
 Push should push to 'default' when 'default-push' not set:
 
   $ hg --cwd b push
-  pushing to .*/a
+  pushing to .*/a (re)
   searching for changes
   adding changesets
   adding manifests
@@ -29,7 +29,7 @@ Push should push to 'default-push' when 
 
   $ echo 'default-push = ../c' >> b/.hg/hgrc
   $ hg --cwd b push
-  pushing to .*/c
+  pushing to .*/c (re)
   searching for changes
   adding changesets
   adding manifests
diff --git a/tests/test-globalopts.t b/tests/test-globalopts.t
--- a/tests/test-globalopts.t
+++ b/tests/test-globalopts.t
@@ -240,12 +240,12 @@ Testing --time:
 
   $ hg --cwd a --time id
   8580ff50825a tip
-  Time: real .*
+  Time: real .* (re)
 
 Testing --version:
 
   $ hg --version -q
-  Mercurial Distributed SCM .*
+  Mercurial Distributed SCM .* (re)
 
 Testing -h/--help:
 
diff --git a/tests/test-help.t b/tests/test-help.t
--- a/tests/test-help.t
+++ b/tests/test-help.t
@@ -189,7 +189,7 @@ Short help:
 Test short command list with verbose option
 
   $ hg -v help shortlist
-  Mercurial Distributed SCM \(version .*\)
+  Mercurial Distributed SCM \(version .*\) (re)
   
   Copyright (C) 2005-2010 Matt Mackall <mpm at selenic.com> and others
   This is free software; see the source for copying conditions. There is NO
@@ -341,7 +341,7 @@ Verbose help for add
 Test help option with version option
 
   $ hg add -h --version
-  Mercurial Distributed SCM \(version .+?\)
+  Mercurial Distributed SCM \(version .+?\) (re)
   
   Copyright (C) 2005-2010 Matt Mackall <mpm at selenic.com> and others
   This is free software; see the source for copying conditions. There is NO
diff --git a/tests/test-hgignore.t b/tests/test-hgignore.t
--- a/tests/test-hgignore.t
+++ b/tests/test-hgignore.t
@@ -44,7 +44,7 @@ Should display baz only:
 
   $ echo "*.o" > .hgignore
   $ hg status
-  abort: .*/\.hgignore: invalid pattern \(relre\): \*\.o
+  abort: .*/\.hgignore: invalid pattern \(relre\): \*\.o (re)
   [255]
 
   $ echo ".*\.o" > .hgignore
@@ -88,7 +88,7 @@ Check it does not ignore the current dir
 
   $ echo "syntax: invalid" > .hgignore
   $ hg status
-  .*/\.hgignore: ignoring invalid syntax 'invalid'
+  .*/\.hgignore: ignoring invalid syntax 'invalid' (re)
   A dir/b.o
   ? .hgignore
   ? a.c
diff --git a/tests/test-hgrc.t b/tests/test-hgrc.t
--- a/tests/test-hgrc.t
+++ b/tests/test-hgrc.t
@@ -1,6 +1,6 @@
   $ echo "invalid" > $HGRCPATH
   $ hg version
-  hg: parse error at .*/\.hgrc:1: invalid
+  hg: parse error at .*/\.hgrc:1: invalid (re)
   [255]
   $ echo "" > $HGRCPATH
 
@@ -14,12 +14,12 @@ issue1199: escaping
   $ cd foobar
   $ cat .hg/hgrc
   [paths]
-  default = .*/foo%bar
+  default = .*/foo%bar (re)
   $ hg paths
-  default = .*/foo%bar
+  default = .*/foo%bar (re)
   $ hg showconfig
-  bundle\.mainreporoot=.*/foobar
-  paths\.default=.*/foo%bar
+  bundle\.mainreporoot=.*/foobar (re)
+  paths\.default=.*/foo%bar (re)
   $ cd ..
 
 issue1829: wrong indentation
@@ -27,7 +27,7 @@ issue1829: wrong indentation
   $ echo '[foo]' > $HGRCPATH
   $ echo '  x = y' >> $HGRCPATH
   $ hg version
-  hg: parse error at .*/\.hgrc:2:   x = y
+  hg: parse error at .*/\.hgrc:2:   x = y (re)
   [255]
 
   $ python -c "print '[foo]\nbar = a\n b\n c \n  de\n fg \nbaz = bif cb \n'" \
@@ -40,7 +40,7 @@ issue1829: wrong indentation
   $ export FAKEPATH
   $ echo '%include $FAKEPATH/no-such-file' > $HGRCPATH
   $ hg version
-  hg: parse error at .*/\.hgrc:1: cannot include /path/to/nowhere/no-such-file \(No such file or directory\)
+  hg: parse error at .*/\.hgrc:1: cannot include /path/to/nowhere/no-such-file \(No such file or directory\) (re)
   [255]
   $ unset FAKEPATH
 
@@ -90,23 +90,23 @@ HGPLAIN
 customized hgrc
 
   $ hg showconfig
-  read config from: .*/\.hgrc
-  .*/\.hgrc:13: alias\.log=log -g
-  .*/\.hgrc:11: defaults\.identify=-n
-  .*/\.hgrc:2: ui\.debug=true
-  .*/\.hgrc:3: ui\.fallbackencoding=ASCII
-  .*/\.hgrc:4: ui\.quiet=true
-  .*/\.hgrc:5: ui\.slash=true
-  .*/\.hgrc:6: ui\.traceback=true
-  .*/\.hgrc:7: ui\.verbose=true
-  .*/\.hgrc:8: ui\.style=~/.hgstyle
-  .*/\.hgrc:9: ui\.logtemplate=\{node\}
+  read config from: .*/\.hgrc (re)
+  .*/\.hgrc:13: alias\.log=log -g (re)
+  .*/\.hgrc:11: defaults\.identify=-n (re)
+  .*/\.hgrc:2: ui\.debug=true (re)
+  .*/\.hgrc:3: ui\.fallbackencoding=ASCII (re)
+  .*/\.hgrc:4: ui\.quiet=true (re)
+  .*/\.hgrc:5: ui\.slash=true (re)
+  .*/\.hgrc:6: ui\.traceback=true (re)
+  .*/\.hgrc:7: ui\.verbose=true (re)
+  .*/\.hgrc:8: ui\.style=~/.hgstyle (re)
+  .*/\.hgrc:9: ui\.logtemplate=\{node\} (re)
 
 plain hgrc
 
   $ HGPLAIN=; export HGPLAIN
   $ hg showconfig --config ui.traceback=True --debug
-  read config from: .*/\.hgrc
+  read config from: .*/\.hgrc (re)
   none: ui.traceback=True
   none: ui.verbose=False
   none: ui.debug=True
diff --git a/tests/test-hook.t b/tests/test-hook.t
--- a/tests/test-hook.t
+++ b/tests/test-hook.t
@@ -415,12 +415,12 @@ make sure --traceback works
   $ echo >> foo
   $ hg ci --debug -d '0 0' -m 'change foo'
   foo
-  calling hook commit\.auto: <function autohook at .*>
+  calling hook commit\.auto: <function autohook at .*> (re)
   Automatically installed hook
   committed changeset 1:52998019f6252a2b893452765fcb0a47351a5708
 
   $ hg showconfig hooks
-  hooks\.commit\.auto=<function autohook at .*>
+  hooks\.commit\.auto=<function autohook at .*> (re)
 
 test python hook configured with python:[file]:[hook] syntax
 
diff --git a/tests/test-install.t b/tests/test-install.t
--- a/tests/test-install.t
+++ b/tests/test-install.t
@@ -1,7 +1,7 @@
 hg debuginstall
   $ hg debuginstall
   Checking encoding (ascii)...
-  Checking installed modules \(.*/mercurial\)\.\.\.
+  Checking installed modules \(.*/mercurial\)\.\.\. (re)
   Checking templates...
   Checking patch...
   Checking commit editor...
@@ -11,7 +11,7 @@ hg debuginstall
 hg debuginstall with no username
   $ HGUSER= hg debuginstall
   Checking encoding (ascii)...
-  Checking installed modules \(.*/mercurial\)\.\.\.
+  Checking installed modules \(.*/mercurial\)\.\.\. (re)
   Checking templates...
   Checking patch...
   Checking commit editor...
diff --git a/tests/test-journal-exists.t b/tests/test-journal-exists.t
--- a/tests/test-journal-exists.t
+++ b/tests/test-journal-exists.t
@@ -27,7 +27,7 @@ Check that zero-size journals are correc
 
   $ hg -R foo unbundle repo.hg
   adding changesets
-  abort: Permission denied: .*
+  abort: Permission denied: .* (re)
   [255]
 
   $ if test -f foo/.hg/store/journal; then echo 'journal exists :-('; fi
diff --git a/tests/test-keyword.t b/tests/test-keyword.t
--- a/tests/test-keyword.t
+++ b/tests/test-keyword.t
@@ -27,13 +27,13 @@ as it would succeed without uisetup othe
   Revision = {node|short}
   Source = {root}/{file},v
   $Author: test $
-  \$Date: ..../../.. ..:..:.. \$
-  \$Header: .*/demo\.txt,v ............ ..../../.. ..:..:.. test \$
-  \$Id: demo\.txt,v ............ ..../../.. ..:..:.. test \$
+  \$Date: ..../../.. ..:..:.. \$ (re)
+  \$Header: .*/demo\.txt,v ............ ..../../.. ..:..:.. test \$ (re)
+  \$Id: demo\.txt,v ............ ..../../.. ..:..:.. test \$ (re)
   $RCSFile: demo.txt,v $
   $RCSfile: demo.txt,v $
-  \$Revision: ............ \$
-  \$Source: .*/demo\.txt,v \$
+  \$Revision: ............ \$ (re)
+  \$Source: .*/demo.txt,v \$ (re)
 
   $ hg --quiet kwdemo "Branch = {branches}"
   [extensions]
@@ -71,7 +71,7 @@ A bundle to test this was made with:
  hg bundle --base null ../test-keyword.hg
 
   $ hg pull -u "$TESTDIR"/test-keyword.hg
-  pulling from .*test-keyword\.hg
+  pulling from .*test-keyword\.hg (re)
   requesting all changes
   adding changesets
   adding manifests
@@ -150,7 +150,7 @@ hg cat files and symlink, no expansion
   do not process $Id:
   xxx $
   ignore $Id$
-  a.*
+  a.* (re)
 
 Test hook execution
 
@@ -195,15 +195,15 @@ Pull from bundle and trigger notify
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
-  Date: .*
-  Subject: changeset in .*
+  Date: .* (re)
+  Subject: changeset in .* (re)
   From: mercurial
   X-Hg-Notification: changeset a2392c293916
-  Message-Id: <hg\.a2392c293916.*>
+  Message-Id: <hg\.a2392c293916.*> (re)
   To: Test
   
-  changeset a2392c293916 in .*
-  details: .*\?cmd=changeset;node=a2392c293916
+  changeset a2392c293916 in .* (re)
+  details: .*\?cmd=changeset;node=a2392c293916 (re)
   description:
   	addsym
   
@@ -218,15 +218,15 @@ Pull from bundle and trigger notify
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
-  Date:.*
-  Subject: changeset in.*
+  Date:.* (re)
+  Subject: changeset in.* (re)
   From: User Name <user at example.com>
   X-Hg-Notification: changeset ef63ca68695b
-  Message-Id: <hg\.ef63ca68695b.*>
+  Message-Id: <hg\.ef63ca68695b.*> (re)
   To: Test
   
-  changeset ef63ca68695b in .*
-  details: .*\?cmd=changeset;node=ef63ca68695b
+  changeset ef63ca68695b in .* (re)
+  details: .*\?cmd=changeset;node=ef63ca68695b (re)
   description:
   	absym
   
@@ -335,7 +335,7 @@ Diff remaining chunk
   $ hg diff
   diff -r d17e03c92c97 a
   --- a/a	Wed Dec 31 23:59:51 1969 -0000
-  \+\+\+ b/a	.*
+  \+\+\+ b/a	.* (re)
   @@ -2,3 +2,4 @@
    foo
    do not process $Id:
@@ -479,7 +479,7 @@ Diff specific revision
   $ hg diff --rev 1
   diff -r ef63ca68695b c
   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-  \+\+\+ b/c	.*
+  \+\+\+ b/c	.* (re)
   @@ -0,0 +1,3 @@
   +expand $Id$
   +do not process $Id:
@@ -527,7 +527,7 @@ Cat and hg cat files before custom expan
   do not process $Id:
   xxx $
   ignore $Id$
-  a.*
+  a.* (re)
 
 Write custom keyword and prepare multiline commit message
 
@@ -577,7 +577,7 @@ Stat, verify and show custom expansion (
   xxx $
   $Xinfo: User Name <user at example.com>: firstline $
   ignore $Id$
-  a.*
+  a.* (re)
 
 annotate
 
@@ -648,7 +648,7 @@ Clone to test incoming
   > default = ../Test
   > EOF
   $ hg incoming
-  comparing with .*test-keyword\.t/Test
+  comparing with .*test-keyword\.t/Test (re)
   searching for changes
   changeset:   2:bb948857c743
   tag:         tip
@@ -718,7 +718,7 @@ kwshrink a inside directory x
 kwexpand nonexistent
 
   $ hg kwexpand nonexistent
-  nonexistent:.*
+  nonexistent:.* (re)
 
 
 hg serve
@@ -907,7 +907,7 @@ Keywords shrunk in working directory, bu
   xxx $
   $Xinfo: User Name <user at example.com>: firstline $
   ignore $Id$
-  a.*
+  a.* (re)
 
 Now disable keyword expansion
 
@@ -924,4 +924,4 @@ Now disable keyword expansion
   xxx $
   $Xinfo$
   ignore $Id$
-  a.*
+  a.* (re)
diff --git a/tests/test-mq-merge.t b/tests/test-mq-merge.t
--- a/tests/test-mq-merge.t
+++ b/tests/test-mq-merge.t
@@ -32,7 +32,7 @@ Create a patch removing a:
 Save the patch queue so we can merge it later:
 
   $ hg qsave -c -e
-  copy .*/t/\.hg/patches to .*/t/\.hg/patches\.1
+  copy .*/t/\.hg/patches to .*/t/\.hg/patches\.1 (re)
   $ checkundo
 
 Update b and commit in an "update" changeset:
@@ -52,7 +52,7 @@ Update b and commit in an "update" chang
   b
 
   $ hg qpush -a -m
-  merging with queue at: .*/t/\.hg/patches\.1
+  merging with queue at: .*/t/\.hg/patches\.1 (re)
   applying rm_a
   now at: rm_a
 
@@ -91,14 +91,14 @@ Classic MQ merge sequence *with an expli
 Create the reference queue:
 
   $ hg qsave -c -e -n refqueue
-  copy .*/t2/\.hg/patches to .*/t2/\.hg/refqueue
+  copy .*/t2/\.hg/patches to .*/t2/\.hg/refqueue (re)
   $ hg up -C 1
   1 files updated, 0 files merged, 1 files removed, 0 files unresolved
 
 Merge:
 
   $ HGMERGE=internal:other hg qpush -a -m -n refqueue
-  merging with queue at: .*/t2/\.hg/refqueue
+  merging with queue at: .*/t2/\.hg/refqueue (re)
   applying patcha
   patching file a
   Hunk #1 FAILED at 0
@@ -138,10 +138,10 @@ Check patcha2 is still a regular patch:
 
   $ cat .hg/patches/patcha2
   # HG changeset patch
-  # Parent ........................................
+  # Parent ........................................ (re)
   # Date 0 0
   
-  diff -r ............ -r ............ a
+  diff -r ............ -r ............ a (re)
   --- a/a
   +++ b/a
   @@ -1,2 +1,3 @@
diff --git a/tests/test-mq-qfold.t b/tests/test-mq-qfold.t
--- a/tests/test-mq-qfold.t
+++ b/tests/test-mq-qfold.t
@@ -59,7 +59,7 @@ Fold with local changes:
   [255]
 
   $ hg diff -c .
-  diff -r 07f494440405 -r ............ a
+  diff -r 07f494440405 -r ............ a (re)
   --- a/a
   +++ b/a
   @@ -1,1 +1,3 @@
@@ -85,7 +85,7 @@ Fold git patch into a regular patch, exp
 
   $ cat .hg/patches/regular
   # HG changeset patch
-  # Parent ........................................
+  # Parent ........................................ (re)
   
   diff --git a/a b/a
   --- a/a
@@ -127,7 +127,7 @@ Fold regular patch into a git patch, exp
 
   $ cat .hg/patches/git
   # HG changeset patch
-  # Parent ........................................
+  # Parent ........................................ (re)
   
   diff --git a/a b/aa
   copy from a
diff --git a/tests/test-mq-qrefresh.t b/tests/test-mq-qrefresh.t
--- a/tests/test-mq-qrefresh.t
+++ b/tests/test-mq-qrefresh.t
@@ -255,7 +255,7 @@ qrefresh --short tests:
 diff shows what is not in patch:
 
   $ hg diff
-  diff -r ............ orphanchild
+  diff -r ............ orphanchild (re)
   --- /dev/null
   +++ b/orphanchild
   @@ -0,0 +1,1 @@
diff --git a/tests/test-mq-safety.t b/tests/test-mq-safety.t
--- a/tests/test-mq-safety.t
+++ b/tests/test-mq-safety.t
@@ -39,7 +39,7 @@ qpop/qrefresh on the wrong revision
   abort: popping would remove a revision not managed by this patch queue
   [255]
   $ hg qpop -n patches
-  using patch queue: .*/repo/\.hg/patches
+  using patch queue: .*/repo/\.hg/patches (re)
   abort: popping would remove a revision not managed by this patch queue
   [255]
   $ hg qrefresh
diff --git a/tests/test-mq-strip.t b/tests/test-mq-strip.t
--- a/tests/test-mq-strip.t
+++ b/tests/test-mq-strip.t
@@ -77,7 +77,7 @@
   summary:     e
   
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
   % after update 4, strip 4
   changeset:   3:65bd5f99a4a3
   tag:         tip
@@ -96,7 +96,7 @@
   summary:     e
   
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
   % after update 4, strip 3
   changeset:   1:ef3a871183d7
   user:        test
@@ -111,7 +111,7 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     b
   
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
   % after update 1, strip 4
   changeset:   1:ef3a871183d7
   user:        test
@@ -127,7 +127,7 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     e
   
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
   % after update 4, strip 2
   changeset:   3:443431ffac4f
   tag:         tip
@@ -146,7 +146,7 @@
   summary:     c
   
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
   % after update 4, strip 1
   changeset:   0:9ab35a2d17cb
   tag:         tip
@@ -157,7 +157,7 @@
   $ teststrip null 4
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   % before update null, strip 4
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
   % after update null, strip 4
 
   $ hg log
@@ -212,7 +212,7 @@ before strip of merge parent
   
   $ hg strip 4
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
 
 after strip of merge parent
 
@@ -258,7 +258,7 @@ after strip of merge parent
 2 is parent of 3, only one strip should happen
 
   $ hg strip 2 3
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
   $ hg glog
   @  changeset:   2:264128213d29
   |  tag:         tip
@@ -310,8 +310,8 @@ 2 different branches: 2 strips
 
   $ hg strip 2 4
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
+  saved backup bundle to .* (re)
   $ hg glog
   @  changeset:   2:65bd5f99a4a3
   |  tag:         tip
@@ -335,14 +335,14 @@ 2 different branches and a common ancest
 
   $ hg strip 1 2 4
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
   $ restore
 
 
 remove branchy history for qimport tests
 
   $ hg strip 3
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
 
 
 strip of applied mq should cleanup status file
@@ -364,7 +364,7 @@ stripping revision in queue
 
   $ hg strip 3
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
 
 applied patches after stripping rev in queue
 
@@ -375,7 +375,7 @@ stripping ancestor of queue
 
   $ hg strip 1
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
 
 applied patches after stripping ancestor of queue
 
diff --git a/tests/test-mq.t b/tests/test-mq.t
--- a/tests/test-mq.t
+++ b/tests/test-mq.t
@@ -135,7 +135,7 @@ qinit -c should create both files if the
   guards
   $ cat .hg/patches/series
   $ hg qinit -c
-  abort: repository .* already exists!
+  abort: repository .* already exists! (re)
   [255]
   $ cd ..
 
@@ -237,9 +237,9 @@ qrefresh
   $ cat .hg/patches/test.patch
   foo bar
   
-  diff -r [a-f0-9]* a
-  --- a/a\t(?P<date>.*)
-  \+\+\+ b/a\t(?P<date2>.*)
+  diff -r [a-f0-9]* a (re)
+  --- a/a\t(?P<date>.*) (re)
+  \+\+\+ b/a\t(?P<date2>.*) (re)
   @@ -1,1 +1,2 @@
    a
   +a
@@ -290,7 +290,7 @@ Dump the tag cache to ensure that it has
 .hg/tags.cache (pre qpush):
 
   $ cat .hg/tags.cache
-  1 [\da-f]{40}
+  1 [\da-f]{40} (re)
   
   $ hg qpush
   applying test.patch
@@ -300,7 +300,7 @@ Dump the tag cache to ensure that it has
 .hg/tags.cache (post qpush):
 
   $ cat .hg/tags.cache
-  2 [\da-f]{40}
+  2 [\da-f]{40} (re)
   
   $ checkundo qpush
   $ cd ..
@@ -737,7 +737,7 @@ strip
   adding x
   $ hg strip tip
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
   $ hg unbundle .hg/strip-backup/*
   adding changesets
   adding manifests
@@ -760,7 +760,7 @@ strip with local changes, should complai
 
   $ hg strip -f tip
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
 
 
 cd b; hg qrefresh
@@ -782,14 +782,14 @@ cd b; hg qrefresh
   foo
   
   diff -r cb9a9f314b8b a
-  --- a/a\t(?P<date>.*)
-  \+\+\+ b/a\t(?P<date>.*)
+  --- a/a\t(?P<date>.*) (re)
+  \+\+\+ b/a\t(?P<date>.*) (re)
   @@ -1,1 +1,2 @@
    a
   +a
   diff -r cb9a9f314b8b b/f
-  --- /dev/null\t(?P<date>.*)
-  \+\+\+ b/b/f\t(?P<date>.*)
+  --- /dev/null\t(?P<date>.*) (re)
+  \+\+\+ b/b/f\t(?P<date>.*) (re)
   @@ -0,0 +1,1 @@
   +f
 
@@ -800,8 +800,8 @@ hg qrefresh .
   foo
   
   diff -r cb9a9f314b8b b/f
-  --- /dev/null\t(?P<date>.*)
-  \+\+\+ b/b/f\t(?P<date>.*)
+  --- /dev/null\t(?P<date>.*) (re)
+  \+\+\+ b/b/f\t(?P<date>.*) (re)
   @@ -0,0 +1,1 @@
   +f
   $ hg status
@@ -1118,7 +1118,7 @@ strip again
   
   $ hg strip 1
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
   $ checkundo strip
   $ hg log
   changeset:   1:20cbbe65cff7
diff --git a/tests/test-patchbomb.t b/tests/test-patchbomb.t
--- a/tests/test-patchbomb.t
+++ b/tests/test-patchbomb.t
@@ -25,8 +25,8 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716\.60 at .*
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <8580ff50825a50c8f716\.60 at .* (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
@@ -80,8 +80,8 @@
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2] test
-  Message-Id: <patchbomb\.120@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <patchbomb\.120@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Thu, 01 Jan 1970 00:02:00 +0000
   From: quux
   To: foo
@@ -94,10 +94,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 2] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716\.121@[^>]*>
-  In-Reply-To: <patchbomb\.120@[^>]*>
-  References: <patchbomb\.120@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <8580ff50825a50c8f716\.121@[^>]*> (re)
+  In-Reply-To: <patchbomb\.120@[^>]*> (re)
+  References: <patchbomb\.120@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Thu, 01 Jan 1970 00:02:01 +0000
   From: quux
   To: foo
@@ -122,10 +122,10 @@
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 2 of 2] b
   X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
-  Message-Id: <97d72e5f12c7e84f8506\.122@[^>]*>
-  In-Reply-To: <patchbomb\.120@[^>]*>
-  References: <patchbomb\.120@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <97d72e5f12c7e84f8506\.122@[^>]*> (re)
+  In-Reply-To: <patchbomb\.120@[^>]*> (re)
+  References: <patchbomb\.120@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Thu, 01 Jan 1970 00:02:02 +0000
   From: quux
   To: foo
@@ -241,8 +241,8 @@ mime encoded mbox (base64):
   Content-Transfer-Encoding: base64
   Subject: [PATCH] charset=utf-8; content-transfer-encoding: base64
   X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
-  Message-Id: <c3c9e37db9f4fe4882cd\.240 at .*
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <c3c9e37db9f4fe4882cd\.240 at .* (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Thu, 01 Jan 1970 00:04:00 +0000
   From: quux
   To: foo
@@ -1810,8 +1810,8 @@ test multi-byte domain parsing:
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] test
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
-  Message-Id: <8580ff50825a50c8f716\.315532860 at .*
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <8580ff50825a50c8f716\.315532860 at .* (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: quux
   To: bar at xn--nicode-2ya.com
@@ -1857,8 +1857,8 @@ test outgoing:
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 8] test
-  Message-Id: <patchbomb\.315532860 at .*
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <patchbomb\.315532860 at .* (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: test
   To: foo
@@ -1870,10 +1870,10 @@ test outgoing:
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 1 of 8] c
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
-  Message-Id: <ff2c9fa2018b15fa74b3\.315532861 at .*
-  In-Reply-To: <patchbomb\.315532860@[^>]*>
-  References: <patchbomb\.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <ff2c9fa2018b15fa74b3\.315532861 at .* (re)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Tue, 01 Jan 1980 00:01:01 +0000
   From: test
   To: foo
@@ -1897,10 +1897,10 @@ test outgoing:
   Content-Transfer-Encoding: 8bit
   Subject: [PATCH 2 of 8] charset=utf-8; content-transfer-encoding: base64
   X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
-  Message-Id: <c3c9e37db9f4fe4882cd\.315532862 at .*
-  In-Reply-To: <patchbomb\.315532860@[^>]*>
-  References: <patchbomb\.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <c3c9e37db9f4fe4882cd\.315532862 at .* (re)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Tue, 01 Jan 1980 00:01:02 +0000
   From: test
   To: foo
@@ -1932,10 +1932,10 @@ test outgoing:
   Subject: [PATCH 3 of 8] charset=utf-8;
    content-transfer-encoding: quoted-printable
   X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
-  Message-Id: <c655633f8c87700bb38c\.315532863 at .*
-  In-Reply-To: <patchbomb\.315532860@[^>]*>
-  References: <patchbomb\.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <c655633f8c87700bb38c\.315532863 at .* (re)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Tue, 01 Jan 1980 00:01:03 +0000
   From: test
   To: foo
@@ -1975,10 +1975,10 @@ test outgoing:
   Content-Transfer-Encoding: 8bit
   Subject: [PATCH 4 of 8] charset=us-ascii; content-transfer-encoding: 8bit
   X-Mercurial-Node: 22d0f96be12f5945fd67d101af58f7bc8263c835
-  Message-Id: <22d0f96be12f5945fd67\.315532864 at .*
-  In-Reply-To: <patchbomb\.315532860@[^>]*>
-  References: <patchbomb\.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <22d0f96be12f5945fd67\.315532864 at .* (re)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Tue, 01 Jan 1980 00:01:04 +0000
   From: test
   To: foo
@@ -2002,10 +2002,10 @@ test outgoing:
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 5 of 8] Added tag zero, zero.foo for changeset 8580ff50825a
   X-Mercurial-Node: dd9c2b4b8a8a0934d5523c15f2c119b362360903
-  Message-Id: <dd9c2b4b8a8a0934d552\.315532865 at .*
-  In-Reply-To: <patchbomb\.315532860@[^>]*>
-  References: <patchbomb\.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <dd9c2b4b8a8a0934d552\.315532865 at .* (re)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Tue, 01 Jan 1980 00:01:05 +0000
   From: test
   To: foo
@@ -2030,10 +2030,10 @@ test outgoing:
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 6 of 8] Added tag one, one.patch for changeset 97d72e5f12c7
   X-Mercurial-Node: eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
-  Message-Id: <eae5fcf795eee29d0e45\.315532866 at .*
-  In-Reply-To: <patchbomb\.315532860@[^>]*>
-  References: <patchbomb\.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <eae5fcf795eee29d0e45\.315532866 at .* (re)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Tue, 01 Jan 1980 00:01:06 +0000
   From: test
   To: foo
@@ -2060,10 +2060,10 @@ test outgoing:
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 7 of 8] Added tag two, two.diff for changeset ff2c9fa2018b
   X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
-  Message-Id: <e317db6a6f288748d1f6\.315532867 at .*
-  In-Reply-To: <patchbomb\.315532860@[^>]*>
-  References: <patchbomb\.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <e317db6a6f288748d1f6\.315532867 at .* (re)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Tue, 01 Jan 1980 00:01:07 +0000
   From: test
   To: foo
@@ -2091,10 +2091,10 @@ test outgoing:
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 8 of 8] d
   X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
-  Message-Id: <2f9fa9b998c5fe3ac2bd\.315532868[^>]*>
-  In-Reply-To: <patchbomb\.315532860@[^>]*>
-  References: <patchbomb\.315532860@[^>]*>
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <2f9fa9b998c5fe3ac2bd\.315532868[^>]*> (re)
+  In-Reply-To: <patchbomb\.315532860@[^>]*> (re)
+  References: <patchbomb\.315532860@[^>]*> (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Tue, 01 Jan 1980 00:01:08 +0000
   From: test
   To: foo
@@ -2129,8 +2129,8 @@ dest#branch URIs:
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH] test
   X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
-  Message-Id: <2f9fa9b998c5fe3ac2bd\.315532860 at .*
-  User-Agent: Mercurial-patchbomb/.*
+  Message-Id: <2f9fa9b998c5fe3ac2bd\.315532860 at .* (re)
+  User-Agent: Mercurial-patchbomb/.* (re)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: test
   To: foo
diff --git a/tests/test-paths.t b/tests/test-paths.t
--- a/tests/test-paths.t
+++ b/tests/test-paths.t
@@ -6,11 +6,11 @@
   $ echo '[paths]' >> .hg/hgrc
   $ echo 'dupe = ../b' >> .hg/hgrc
   $ hg in dupe
-  comparing with .*/test-paths\.t/b
+  comparing with .*/test-paths\.t/b (re)
   no changes found
   [1]
   $ cd ..
   $ hg -R a in dupe
-  comparing with .*/test-paths\.t/b
+  comparing with .*/test-paths\.t/b (re)
   no changes found
   [1]
diff --git a/tests/test-permissions.t b/tests/test-permissions.t
--- a/tests/test-permissions.t
+++ b/tests/test-permissions.t
@@ -20,7 +20,7 @@
   checking manifests
   crosschecking files in changesets and manifests
   checking files
-  abort: Permission denied: .*
+  abort: Permission denied: .* (re)
   [255]
 
   $ chmod +r .hg/store/data/a.i
@@ -37,7 +37,7 @@
   $ echo barber > a
   $ hg commit -m "2"
   trouble committing a!
-  abort: Permission denied: .*
+  abort: Permission denied: .* (re)
   [255]
 
   $ chmod -w .
diff --git a/tests/test-push-validation.t b/tests/test-push-validation.t
--- a/tests/test-push-validation.t
+++ b/tests/test-push-validation.t
@@ -40,7 +40,7 @@ Expected to fail:
 Expected to fail:
 
   $ hg push
-  pushing to .*
+  pushing to .* (re)
   searching for changes
   adding changesets
   adding manifests
diff --git a/tests/test-relink.t b/tests/test-relink.t
--- a/tests/test-relink.t
+++ b/tests/test-relink.t
@@ -60,7 +60,7 @@ clone and pull to break links
 relink
 
   $ hg relink --debug | fix_path
-  relinking .*/\.hg/store
+  relinking .*/\.hg/store (re)
   tip has 2 files, estimated total number of files: 3
   collecting: 00changelog.i 1/3 files (33.33%)
   collecting: 00manifest.i 2/3 files (66.67%)
diff --git a/tests/test-rename.t b/tests/test-rename.t
--- a/tests/test-rename.t
+++ b/tests/test-rename.t
@@ -263,8 +263,8 @@ overwrite existing files (d2/b)
   R d1/ba
   R d1/d11/a1
   $ diff -u d1/b d2/b
-  --- d1/b	.*
-  \+\+\+ d2/b	.*
+  --- d1/b	.* (re)
+  \+\+\+ d2/b	.* (re)
   @@ -1 +1 @@
   -d1/b
   +d2/b
diff --git a/tests/test-run-tests.t b/tests/test-run-tests.t
new file mode 100644
--- /dev/null
+++ b/tests/test-run-tests.t
@@ -0,0 +1,32 @@
+Simple commands:
+
+  $ echo foo
+  foo
+  $ echo 'bar\nbaz' | cat
+  bar
+  baz
+
+Multi-line command:
+
+  $ foo() {
+  >     echo bar
+  > }
+  $ foo
+  bar
+
+Regular expressions:
+
+  $ echo foobarbaz
+  foobar.* (re)
+  $ echo barbazquux
+  .*quux.* (re)
+
+Literal match ending in " (re)":
+
+  $ echo 'foo (re)'
+  foo (re)
+
+Exit code:
+
+  $ false
+  [1]
diff --git a/tests/test-subrepo-deep-nested-change.t b/tests/test-subrepo-deep-nested-change.t
--- a/tests/test-subrepo-deep-nested-change.t
+++ b/tests/test-subrepo-deep-nested-change.t
@@ -27,7 +27,7 @@ Preparing the 'main' repo which depends 
   $ echo "sub1 = ../sub1" > main/.hgsub
   $ hg clone sub1 main/sub1
   updating to branch default
-  pulling subrepo sub2 from .*/sub2
+  pulling subrepo sub2 from .*/sub2 (re)
   requesting all changes
   adding changesets
   adding manifests
@@ -55,13 +55,13 @@ Clone main
 
   $ hg clone main cloned
   updating to branch default
-  pulling subrepo sub1 from .*/sub1
+  pulling subrepo sub1 from .*/sub1 (re)
   requesting all changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 3 changes to 3 files
-  pulling subrepo sub1/sub2 from .*/sub2
+  pulling subrepo sub1/sub2 from .*/sub2 (re)
   requesting all changes
   adding changesets
   adding manifests
diff --git a/tests/test-subrepo-paths.t b/tests/test-subrepo-paths.t
--- a/tests/test-subrepo-paths.t
+++ b/tests/test-subrepo-paths.t
@@ -28,5 +28,5 @@ test bad subpaths pattern
   > .* = \1
   > EOF
   $ hg debugsub
-  abort: bad subrepository pattern in .*/test-subrepo-paths\.t/outer/\.hg/hgrc:2: invalid group reference
+  abort: bad subrepository pattern in .*/test-subrepo-paths\.t/outer/\.hg/hgrc:2: invalid group reference (re)
   [255]
diff --git a/tests/test-subrepo-recursion.t b/tests/test-subrepo-recursion.t
--- a/tests/test-subrepo-recursion.t
+++ b/tests/test-subrepo-recursion.t
@@ -252,13 +252,13 @@ Clone and test outgoing:
   $ cd ..
   $ hg clone repo repo2
   updating to branch default
-  pulling subrepo foo from .*/test-subrepo-recursion\.t/repo/foo
+  pulling subrepo foo from .*/test-subrepo-recursion\.t/repo/foo (re)
   requesting all changes
   adding changesets
   adding manifests
   adding file changes
   added 4 changesets with 7 changes to 3 files
-  pulling subrepo foo/bar from .*/test-subrepo-recursion\.t/repo/foo/bar
+  pulling subrepo foo/bar from .*/test-subrepo-recursion\.t/repo/foo/bar (re)
   requesting all changes
   adding changesets
   adding manifests
@@ -267,10 +267,10 @@ Clone and test outgoing:
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cd repo2
   $ hg outgoing -S
-  comparing with .*/test-subrepo-recursion\.t/repo
+  comparing with .*/test-subrepo-recursion\.t/repo (re)
   searching for changes
   no changes found
-  comparing with .*/test-subrepo-recursion\.t/repo/foo
+  comparing with .*/test-subrepo-recursion\.t/repo/foo (re)
   searching for changes
   no changes found
   [1]
@@ -290,7 +290,7 @@ Make nested change:
   $ hg commit -m 3-4-2
   committing subrepository foo
   $ hg outgoing -S
-  comparing with .*/test-subrepo-recursion\.t/repo
+  comparing with .*/test-subrepo-recursion\.t/repo (re)
   searching for changes
   changeset:   3:2655b8ecc4ee
   tag:         tip
@@ -298,7 +298,7 @@ Make nested change:
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     3-4-2
   
-  comparing with .*/test-subrepo-recursion\.t/repo/foo
+  comparing with .*/test-subrepo-recursion\.t/repo/foo (re)
   searching for changes
   changeset:   4:e96193d6cb36
   tag:         tip
@@ -316,7 +316,7 @@ Switch to original repo and setup defaul
 Test incoming:
 
   $ hg incoming -S
-  comparing with .*/test-subrepo-recursion\.t/repo2
+  comparing with .*/test-subrepo-recursion\.t/repo2 (re)
   searching for changes
   changeset:   3:2655b8ecc4ee
   tag:         tip
@@ -324,7 +324,7 @@ Test incoming:
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     3-4-2
   
-  comparing with .*/test-subrepo-recursion\.t/repo2/foo
+  comparing with .*/test-subrepo-recursion\.t/repo2/foo (re)
   searching for changes
   changeset:   4:e96193d6cb36
   tag:         tip
diff --git a/tests/test-subrepo-relative-path.t b/tests/test-subrepo-relative-path.t
--- a/tests/test-subrepo-relative-path.t
+++ b/tests/test-subrepo-relative-path.t
@@ -44,7 +44,7 @@ Clone main from hgweb
   adding file changes
   added 1 changesets with 3 changes to 3 files
   updating to branch default
-  pulling subrepo sub from http://localhost:[0-9]+/sub
+  pulling subrepo sub from http://localhost:[0-9]+/sub (re)
   requesting all changes
   adding changesets
   adding manifests
diff --git a/tests/test-subrepo-svn.t b/tests/test-subrepo-svn.t
--- a/tests/test-subrepo-svn.t
+++ b/tests/test-subrepo-svn.t
@@ -86,7 +86,7 @@ change file in svn and hg, commit
   Transmitting file data .
   Committed revision 3.
   
-  Fetching external item into '.*/s/externals'
+  Fetching external item into '.*/s/externals' (re)
   External at revision 1.
   
   At revision 3.
diff --git a/tests/test-subrepo.t b/tests/test-subrepo.t
--- a/tests/test-subrepo.t
+++ b/tests/test-subrepo.t
@@ -236,19 +236,19 @@ clone
   $ cd ..
   $ hg clone t tc
   updating to branch default
-  pulling subrepo s from .*/sub/t/s
+  pulling subrepo s from .*/sub/t/s (re)
   requesting all changes
   adding changesets
   adding manifests
   adding file changes
   added 4 changesets with 5 changes to 3 files
-  pulling subrepo s/ss from .*/sub/t/s/ss
+  pulling subrepo s/ss from .*/sub/t/s/ss (re)
   requesting all changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files
-  pulling subrepo t from .*/sub/t/t
+  pulling subrepo t from .*/sub/t/t (re)
   requesting all changes
   adding changesets
   adding manifests
@@ -270,14 +270,14 @@ push
   $ hg ci -m11
   committing subrepository t
   $ hg push
-  pushing .*sub/t
-  pushing .*sub/t/s/ss
+  pushing .*sub/t (re)
+  pushing .*sub/t/s/ss (re)
   searching for changes
   no changes found
-  pushing .*sub/t/s
+  pushing .*sub/t/s (re)
   searching for changes
   no changes found
-  pushing .*sub/t/t
+  pushing .*sub/t/t (re)
   searching for changes
   adding changesets
   adding manifests
@@ -295,27 +295,27 @@ push -f
   $ hg ci -m12
   committing subrepository s
   $ hg push
-  pushing .*sub/t
-  pushing .*sub/t/s/ss
+  pushing .*sub/t (re)
+  pushing .*sub/t/s/ss (re)
   searching for changes
   no changes found
-  pushing .*sub/t/s
+  pushing .*sub/t/s (re)
   searching for changes
   abort: push creates new remote heads on branch 'default'!
   (did you forget to merge? use push -f to force)
   [255]
   $ hg push -f
-  pushing .*sub/t
-  pushing .*sub/t/s/ss
+  pushing .*sub/t (re)
+  pushing .*sub/t/s/ss (re)
   searching for changes
   no changes found
-  pushing .*sub/t/s
+  pushing .*sub/t/s (re)
   searching for changes
   adding changesets
   adding manifests
   adding file changes
   added 1 changesets with 1 changes to 1 files (+1 heads)
-  pushing .*sub/t/t
+  pushing .*sub/t/t (re)
   searching for changes
   no changes found
   searching for changes
@@ -337,7 +337,7 @@ pull
 
   $ cd ../tc
   $ hg pull
-  pulling .*sub/t
+  pulling .*sub/t (re)
   searching for changes
   adding changesets
   adding manifests
@@ -348,7 +348,7 @@ pull
 should pull t
 
   $ hg up
-  pulling subrepo t from .*/sub/t/t
+  pulling subrepo t from .*/sub/t/t (re)
   searching for changes
   adding changesets
   adding manifests
@@ -541,9 +541,9 @@ test repository cloning
   $ cat mercurial2/main/nested_absolute/.hg/hgrc \
   >     mercurial2/main/nested_relative/.hg/hgrc
   [paths]
-  default = .*/test-subrepo\.t/sub/mercurial/nested_absolute
+  default = .*/test-subrepo\.t/sub/mercurial/nested_absolute (re)
   [paths]
-  default = .*/test-subrepo\.t/sub/mercurial/nested_relative
+  default = .*/test-subrepo\.t/sub/mercurial/nested_relative (re)
   $ rm -rf mercurial mercurial2
 
 issue 1977
@@ -559,7 +559,7 @@ issue 1977
   committing subrepository s
   $ hg clone repo repo2
   updating to branch default
-  pulling subrepo s from .*/sub/repo/s
+  pulling subrepo s from .*/sub/repo/s (re)
   requesting all changes
   adding changesets
   adding manifests
diff --git a/tests/test-tags.t b/tests/test-tags.t
--- a/tests/test-tags.t
+++ b/tests/test-tags.t
@@ -299,7 +299,7 @@ Don't allow moving tag without -f:
 Strip 1: expose an old head:
 
   $ hg --config extensions.mq= strip 5
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
   $ hg tags                  # partly stale cache
   tip                                5:735c3ca72986
   bar                                1:78391a272241
@@ -310,7 +310,7 @@ Strip 1: expose an old head:
 Strip 2: destroy whole branch, no old head exposed
 
   $ hg --config extensions.mq= strip 4
-  saved backup bundle to .*
+  saved backup bundle to .* (re)
   $ hg tags                  # partly stale
   tip                                4:735c3ca72986
   bar                                0:bbd179dfa0a7
diff --git a/tests/test-transplant.t b/tests/test-transplant.t
--- a/tests/test-transplant.t
+++ b/tests/test-transplant.t
@@ -285,16 +285,16 @@ test filter
   > EOF
   $ chmod +x test-filter
   $ hg transplant -s ../t -b tip -a --filter ./test-filter
-  filtering .*
+  filtering .* (re)
   applying 17ab29e464c6
   17ab29e464c6 transplanted to e9ffc54ea104
-  filtering .*
+  filtering .* (re)
   applying 37a1297eb21b
   37a1297eb21b transplanted to 348b36d0b6a5
-  filtering .*
+  filtering .* (re)
   applying 722f4667af76
   722f4667af76 transplanted to 0aa6979afb95
-  filtering .*
+  filtering .* (re)
   applying a53251cdf717
   a53251cdf717 transplanted to 14f8512272b5
   $ hg log --template '{rev} {parents} {desc}\n'
@@ -316,7 +316,7 @@ test filter with failed patch
   adding test-filter
   created new head
   $ hg transplant 1 --filter ./test-filter
-  filtering .*
+  filtering .* (re)
   applying 348b36d0b6a5
   file b1 already exists
   1 out of 1 hunks FAILED -- saving rejects to file b1.rej
diff --git a/tests/test-url-rev.t b/tests/test-url-rev.t
--- a/tests/test-url-rev.t
+++ b/tests/test-url-rev.t
@@ -42,7 +42,7 @@ Test basic functionality of url#rev synt
   
   $ cat clone/.hg/hgrc
   [paths]
-  default = .*/repo#foo
+  default = .*/repo#foo (re)
 
 Changing original repo:
 
diff --git a/tests/test-walk.t b/tests/test-walk.t
--- a/tests/test-walk.t
+++ b/tests/test-walk.t
@@ -216,7 +216,7 @@ Test absolute paths:
   f  beans/pinto     beans/pinto
   f  beans/turtle    beans/turtle
   $ hg debugwalk `pwd`/..
-  abort: .*/\.\. not under root
+  abort: .*/\.\. not under root (re)
   [255]
 
 Test patterns:


More information about the Mercurial-devel mailing list