Matt Mackall <mpm@selenic.com> [Thu, 03 Nov 2011 14:51:04 -0500] rev 1001
run-tests: pull out unified matching funcs
[ original upstream message ]
Matt Mackall <mpm@selenic.com> [Thu, 03 Nov 2011 14:48:56 -0500] rev 1000
tests: add some comments to the unified test code
[ original upstream message ]
Matt Mackall <mpm@selenic.com> [Thu, 03 Nov 2011 14:30:00 -0500] rev 999
tests: rewrite inline Python support
Tests with inline Python could turn '>>>' into their underlying python
invocation if the test got updated with -i.
[ original upstream message ]
Christian Ebert <blacktrash@gmx.net> [Mon, 07 Nov 2011 13:48:11 +0000] rev 998
Backout b78cce2b1430 until a proper solution is found
Christian Ebert <blacktrash@gmx.net> [Mon, 24 Oct 2011 17:02:10 +0100] rev 997
Merge with stable
Thomas Arendsen Hein <thomas@intevation.de> [Sat, 22 Oct 2011 23:21:38 +0200] rev 996
run-tests: make sure no_proxy/NO_PROXY are empty to fix test-http-proxy.t
If no_proxy (or NO_PROXY) includes localhost, the test for detecting an
unreachable proxy fails, because the proxy setting is ignored.
[ original upstream message ]
Thomas Arendsen Hein <thomas@intevation.de> [Mon, 24 Oct 2011 13:54:59 +0200] rev 995
keyword: use util.realpath instead of os.path.realpath
This makes test-keyword.t pass on Python 2.4.1 (e.g. Debian sarge)
[ original upstream message ]
Christian Ebert <blacktrash@gmx.net> [Sat, 22 Oct 2011 15:45:19 +0100] rev 994
Merge with default
Christian Ebert <blacktrash@gmx.net> [Fri, 21 Oct 2011 12:07:27 +0100] rev 993
Correct grammar in iskwfile docstring
Christian Ebert <blacktrash@gmx.net> [Sat, 22 Oct 2011 15:43:48 +0100] rev 992
Merge with stable
Greg Ward <greg@gerg.ca> [Fri, 30 Sep 2011 21:58:54 -0400] rev 991
rollback: avoid unsafe rollback when not at tip (issue2998)
You can get into trouble if you commit, update back to an older
changeset, and then rollback. The update removes your valuable changes
from the working dir, then rollback removes them history. Oops: you've
just irretrievably lost data running nothing but core Mercurial
commands. (More subtly: rollback from a shared clone that was already
at an older changeset -- no update required, just rollback from the
wrong directory.)
The fix assumes that only "commit" transactions have irreplaceable
data, and allows rolling back non-commit transactions as always. But
when rolling back a commit, check that the working dir is checked out
to tip, i.e. the changeset we're about to destroy. If not, abort. You
can get back the old (dangerous) behaviour with --force.
[ original upstream message ]
Christian Ebert <blacktrash@gmx.net> [Sun, 16 Oct 2011 15:32:04 +0100] rev 990
Merge with stable
Idan Kamara <idankk86@gmail.com> [Thu, 13 Oct 2011 17:54:37 +0200] rev 989
run-tests: end doctest block when seeing a non-command
[ original upstream message ]
Christian Ebert <blacktrash@gmx.net> [Thu, 13 Oct 2011 17:48:29 +0100] rev 988
Merge with stable
Idan Kamara <idankk86@gmail.com> [Wed, 12 Oct 2011 22:01:14 +0200] rev 987
tests: add support for inline doctests in test files
This adds doctest like syntax to .t files, that can be interleaved with regular
shell code:
$ echo -n a > file
>>> print open('file').read()
a
>>> open('file', 'a').write('b')
$ cat file
ab
The syntax is exactly the same as regular doctests, so multiline statements
look like this:
>>> for i in range(3):
... print i
0
1
2
Each block has its own context, i.e.:
>>> x = 0
>>> print x
0
$ echo 'foo'
foo
>>> print x
will result in a NameError.
Errors are displayed in standard doctest format:
>>> print 'foo'
bar
--- /home/idan/dev/hg/default/tests/test-test.t
+++ /home/idan/dev/hg/default/tests/test-test.t.err
@@ -2,3 +2,16 @@
> >>> print 'foo'
> bar
> EOF
+ **********************************************************************
+ File "/tmp/tmps8X_0ohg-tst", line 1, in tmps8X_0ohg-tst
+ Failed example:
+ print 'foo'
+ Expected:
+ bar
+ Got:
+ foo
+ **********************************************************************
+ 1 items had failures:
+ 1 of 1 in tmps8X_0ohg-tst
+ ***Test Failed*** 1 failures.
+ [1]
As for the implementation, it's quite simple: when the test runner sees a line
starting with '>>>' it converts it, and all subsequent lines until the next
line that begins with '$' to a 'python -m heredoctest <<EOF' call with the
proper heredoc to follow. So if we have this test file:
>>> for c in 'abcd':
... print c
a
b
c
d
$ echo foo
foo
It gets converted to:
$ python -m heredoctest <<EOF
> >>> for c in 'abcd':
> ... print c
> a
> b
> c
> d
> EOF
$ echo foo
foo
And then processed like every other test file by converting it to a sh script.
[ original upstream message ]