Na'Tosha Bard <natosha@unity3d.com> [Thu, 13 Oct 2011 12:11:25 +0200] rev 15250
largefiles: speed up commit by only rewriting standins for modified largefiles
Idan Kamara <idankk86@gmail.com> [Thu, 13 Oct 2011 17:54:38 +0200] rev 15249
tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com> [Thu, 13 Oct 2011 17:54:37 +0200] rev 15248
run-tests: end doctest block when seeing a non-command
Idan Kamara <idankk86@gmail.com> [Thu, 13 Oct 2011 17:54:35 +0200] rev 15247
tests: remove temp doctest file when finished running it
Mads Kiilerich <mads@kiilerich.com> [Thu, 13 Oct 2011 04:27:49 +0200] rev 15246
httprepo: make __del__ more stable in error situations
Some errors could leave self.urlopener uninitialized and thus cause strange
crashes in __del__.
This member variable is now "declared statically" and checked for assignment
before use.
Mads Kiilerich <mads@kiilerich.com> [Sun, 31 Oct 2010 18:29:55 +0100] rev 15245
tests: exercise some corner cases for mq guard selection and --reapply
Mads Kiilerich <mads@kiilerich.com> [Thu, 13 Oct 2011 04:27:49 +0200] rev 15244
tests: cleanup of test-fetch.t
Mads Kiilerich <mads@kiilerich.com> [Thu, 13 Oct 2011 04:27:49 +0200] rev 15243
tests: cleanup of echo statements left over from test conversion
Matt Mackall <mpm@selenic.com> [Wed, 12 Oct 2011 18:59:59 -0500] rev 15242
graft: add examples and information about copied metadata
Matt Mackall <mpm@selenic.com> [Wed, 12 Oct 2011 18:48:57 -0500] rev 15241
graft: add --continue support
Matt Mackall <mpm@selenic.com> [Wed, 12 Oct 2011 18:46:23 -0500] rev 15240
graft: add user, date, and tool options
Matt Mackall <mpm@selenic.com> [Wed, 12 Oct 2011 18:46:03 -0500] rev 15239
graft: add --edit
Matt Mackall <mpm@selenic.com> [Wed, 12 Oct 2011 18:45:36 -0500] rev 15238
graft: add initial implementation
Augie Fackler <durin42@gmail.com> [Wed, 12 Oct 2011 11:09:57 -0500] rev 15237
bookmarks: delegate writing to the repo just like reading
This makes it easier for alternate storage backends to not use flat
files for bookmarks storage.
Idan Kamara <idankk86@gmail.com> [Wed, 12 Oct 2011 22:01:14 +0200] rev 15236
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.
Idan Kamara <idankk86@gmail.com> [Wed, 12 Oct 2011 22:01:13 +0200] rev 15235
tests: add helper script for processing doctests read from stdin
Writes stdin to a temp file and doctests it.
In the future we might want to spare the temp file and directly call into
doctest.
Also, with some tweaking it seems possible to adjust the line numbers reported
in an error report so they match the ones in the original file.