Mercurial > hg
annotate tests/blackbox-readonly-dispatch.py @ 40093:726cfc47f17a
contrib: add an utility module to parse test scripts
This patch centralizes the logic to pick up code fragments embedded in
*.t script, in order to:
- apply checking with patterns in check-code.py on such embedded
code fragments
Now, check-code.py completely ignores embedded code
fragments. I'll post another patch series to check them.
- replace similar code path in contrib/import-checker.py
Current import-checker.py has problems below. Fixing each of them
is a little difficult, because parsing logic and pattern strings
are tightly coupled.
- overlook (or mis-detect) the end of inline script in doctest
style
8a8dd6e4a97a fixed a part of this issue, but not enough.
- it overlooks inline script in doctest style at the end of file
(and ignores invalid un-closed heredoc at the end of file, too)
- it overlooks code fragment in styles below
- "python <<EOF" (heredoc should be "cat > file <<EOF" style)
- "cat > foobar.py << ANYLIMIT" (limit mark should be "EOF")
- "cat << EOF > foobar.py" (filename should be placed before limit mark)
- "cat >> foobar.py << EOF" (appending is ignored)
- it is not extensible for other than python code fragments
(e.g. shell script, hgrc file, and so on)
This new module can detect python code fragments in styles below:
- inline script in doctest style (starting by " >>> " line)
- python invocation with heredoc script ("python <<EOF")
- python script in heredoc style (redirected into ".py" file)
As an example of extensibility of new module, this patch also contains
implementation to pick up code fragment below. This will be useful to
add additional restriction for them, for example.
- shell script in heredoc style (redirected into ".sh" file)
- hgrc configuration in heredoc style (redirected into hgrc or $HGRCPATH)
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Thu, 23 Aug 2018 12:25:54 +0900 |
parents | f4a508f4ea87 |
children | c93d046d4300 |
rev | line source |
---|---|
36738
70a98c3fba2a
py3: make blackbox-readonly-dispatch.py use ui instead of print()
Yuya Nishihara <yuya@tcha.org>
parents:
35724
diff
changeset
|
1 from __future__ import absolute_import |
5095
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
2 import os |
28404
06245740b408
tests: test-dispatch use absolute_import
timeless <timeless@mozdev.org>
parents:
14438
diff
changeset
|
3 from mercurial import ( |
06245740b408
tests: test-dispatch use absolute_import
timeless <timeless@mozdev.org>
parents:
14438
diff
changeset
|
4 dispatch, |
36738
70a98c3fba2a
py3: make blackbox-readonly-dispatch.py use ui instead of print()
Yuya Nishihara <yuya@tcha.org>
parents:
35724
diff
changeset
|
5 ui as uimod, |
28404
06245740b408
tests: test-dispatch use absolute_import
timeless <timeless@mozdev.org>
parents:
14438
diff
changeset
|
6 ) |
5095
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
7 |
5178
18a9fbb5cd78
dispatch: move command dispatching into its own module
Matt Mackall <mpm@selenic.com>
parents:
5095
diff
changeset
|
8 def testdispatch(cmd): |
18a9fbb5cd78
dispatch: move command dispatching into its own module
Matt Mackall <mpm@selenic.com>
parents:
5095
diff
changeset
|
9 """Simple wrapper around dispatch.dispatch() |
5095
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
10 |
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
11 Prints command and result value, but does not handle quoting. |
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
12 """ |
36738
70a98c3fba2a
py3: make blackbox-readonly-dispatch.py use ui instead of print()
Yuya Nishihara <yuya@tcha.org>
parents:
35724
diff
changeset
|
13 ui = uimod.ui.load() |
36739
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
14 ui.status(b"running: %s\n" % cmd) |
36738
70a98c3fba2a
py3: make blackbox-readonly-dispatch.py use ui instead of print()
Yuya Nishihara <yuya@tcha.org>
parents:
35724
diff
changeset
|
15 req = dispatch.request(cmd.split(), ui) |
14438
08bfec2ef031
dispatch: wrap dispatch related information in a request class
Idan Kamara <idankk86@gmail.com>
parents:
9031
diff
changeset
|
16 result = dispatch.dispatch(req) |
36739
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
17 ui.status(b"result: %r\n" % result) |
5095
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
18 |
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
19 # create file 'foo', add and commit |
36739
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
20 f = open(b'foo', 'wb') |
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
21 f.write(b'foo\n') |
5095
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
22 f.close() |
36739
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
23 testdispatch(b"--debug add foo") |
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
24 testdispatch(b"--debug commit -m commit1 -d 2000-01-01 foo") |
5095
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
25 |
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
26 # append to file 'foo' and commit |
36739
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
27 f = open(b'foo', 'ab') |
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
28 f.write(b'bar\n') |
5095
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
29 f.close() |
28406
0767c2f624c6
tests: divorce blackbox test from test-dispatch.py
timeless <timeless@mozdev.org>
parents:
28405
diff
changeset
|
30 # remove blackbox.log directory (proxy for readonly log file) |
36739
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
31 os.rmdir(b".hg/blackbox.log") |
28406
0767c2f624c6
tests: divorce blackbox test from test-dispatch.py
timeless <timeless@mozdev.org>
parents:
28405
diff
changeset
|
32 # replace it with the real blackbox.log file |
36739
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
33 os.rename(b".hg/blackbox.log-", b".hg/blackbox.log") |
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
34 testdispatch(b"--debug commit -m commit2 -d 2000-01-02 foo") |
5095
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
35 |
f3f033def181
Added test for commands.dispatch (especially 88803a69b24)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
diff
changeset
|
36 # check 88803a69b24 (fancyopts modified command table) |
36739
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
37 testdispatch(b"--debug log -r 0") |
f4a508f4ea87
py3: byte-stringify blackbox-readonly-dispatch.py
Yuya Nishihara <yuya@tcha.org>
parents:
36738
diff
changeset
|
38 testdispatch(b"--debug log -r tip") |