README
author Idan Kamara <idankk86@gmail.com>
Wed, 12 Oct 2011 22:01:14 +0200
branchstable
changeset 987 5fc540826f9f
parent 886 a8ae86023c67
child 984 a4ea5c2d3ff3
child 1345 ea8abd9436ee
permissions -rw-r--r--
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 ]
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
190
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     1
$Id$
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     2
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     3
keyword extension for Mercurial SCM
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     4
===================================
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     5
561
efeb09cb3760 Refer users to distribution or 0.9.2compat branch
Christian Ebert <blacktrash@gmx.net>
parents: 321
diff changeset
     6
CAVEAT: Please use the keyword extension distributed with
efeb09cb3760 Refer users to distribution or 0.9.2compat branch
Christian Ebert <blacktrash@gmx.net>
parents: 321
diff changeset
     7
Mercurial > 1.0.2!
efeb09cb3760 Refer users to distribution or 0.9.2compat branch
Christian Ebert <blacktrash@gmx.net>
parents: 321
diff changeset
     8
For Mercurial 0.9.2 to 1.0.2 install the 0.9.2compat branch.
efeb09cb3760 Refer users to distribution or 0.9.2compat branch
Christian Ebert <blacktrash@gmx.net>
parents: 321
diff changeset
     9
efeb09cb3760 Refer users to distribution or 0.9.2compat branch
Christian Ebert <blacktrash@gmx.net>
parents: 321
diff changeset
    10
The default and stable branches are meant for development.
efeb09cb3760 Refer users to distribution or 0.9.2compat branch
Christian Ebert <blacktrash@gmx.net>
parents: 321
diff changeset
    11
190
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    12
install
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    13
-------
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    14
562
b1aa7b64890b Add run-tests.py from main and update README
Christian Ebert <blacktrash@gmx.net>
parents: 561
diff changeset
    15
Run "python setup.py install".
190
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    16
See also "pyton setup.py --help".
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    17
Then add the line:
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    18
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    19
[extensions]
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    20
keyword = /path/to/hgkw/keyword.py
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    21
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    22
to your hgrc, where /path/to/ is somewhere in your $PYTHONPATH.
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    23
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    24
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    25
first steps and online help
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    26
---------------------------
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    27
321
ce5474dd2a9a README: fix help instruction
Christian Ebert <blacktrash@gmx.net>
parents: 239
diff changeset
    28
$ hg help keyword 
190
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    29
$ hg kwdemo
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    30
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    31
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    32
testing
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    33
-------
100d35923d5f Add README
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    34
562
b1aa7b64890b Add run-tests.py from main and update README
Christian Ebert <blacktrash@gmx.net>
parents: 561
diff changeset
    35
$ cd tests
886
a8ae86023c67 README: minimal test command line
Christian Ebert <blacktrash@gmx.net>
parents: 562
diff changeset
    36
$ ./run-tests.py --with-hg=/path/to/hg