Mercurial > hg
annotate tests/test-minirst.py @ 37048:fc5e261915b9
wireproto: require POST for all HTTPv2 requests
Wire protocol version 1 transfers argument data via request
headers by default. This has historically caused problems because
servers institute limits on the length of individual HTTP headers
as well as the total size of all request headers. Mercurial servers
can advertise the maximum length of an individual header. But
there's no guarantee any intermediate HTTP agents will accept
headers up to that length.
In the existing wire protocol, server operators typically also
key off the HTTP request method to implement authentication.
For example, GET requests translate to read-only requests and
can be allowed. But read-write commands must use POST and require
authentication. This has typically worked because the only wire
protocol commands that use POST modify the repo (e.g. the
"unbundle" command).
There is an experimental feature to enable clients to transmit
argument data via POST request bodies. This is technically a
better and more robust solution. But we can't enable it by default
because of servers assuming POST means write access.
In version 2 of the wire protocol, the permissions of a request
are encoded in the URL. And with it being a new protocol in a new
URL space, we're not constrained by backwards compatibility
requirements.
This commit adopts the technically superior mechanism of using
HTTP request bodies to send argument data by requiring POST for
all commands. Strictly speaking, it may be possible to send
request bodies on GET requests. But my experience is that not all
HTTP stacks support this. POST pretty much always works. Using POST
for read-only operations does sacrifice some RESTful design
purity. But this API cares about practicality, not about being
in Roy T. Fielding's REST ivory tower.
There's a chance we may relax this restriction in the future. But
for now, I want to see how far we can get with a POST only API.
Differential Revision: https://phab.mercurial-scm.org/D2837
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 13 Mar 2018 11:57:43 -0700 |
parents | 87b8fc4533ca |
children | 672f51ec0d47 |
rev | line source |
---|---|
28752
6b2f9a4e2f97
py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28751
diff
changeset
|
1 from __future__ import absolute_import, print_function |
28840
8717d4609ab3
tests: stop direct symbol import of pprint.pprint in tests-minirst
Yuya Nishihara <yuya@tcha.org>
parents:
28752
diff
changeset
|
2 import pprint |
28751
67a4e42a651f
py3: use absolute_import in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
20654
diff
changeset
|
3 from mercurial import ( |
67a4e42a651f
py3: use absolute_import in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
20654
diff
changeset
|
4 minirst, |
67a4e42a651f
py3: use absolute_import in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
20654
diff
changeset
|
5 ) |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
6 |
15263
70d7293c41d6
minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents:
15262
diff
changeset
|
7 def debugformat(text, form, **kwargs): |
70d7293c41d6
minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents:
15262
diff
changeset
|
8 if form == 'html': |
28752
6b2f9a4e2f97
py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28751
diff
changeset
|
9 print("html format:") |
15263
70d7293c41d6
minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents:
15262
diff
changeset
|
10 out = minirst.format(text, style=form, **kwargs) |
70d7293c41d6
minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents:
15262
diff
changeset
|
11 else: |
28752
6b2f9a4e2f97
py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28751
diff
changeset
|
12 print("%d column format:" % form) |
15263
70d7293c41d6
minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents:
15262
diff
changeset
|
13 out = minirst.format(text, width=form, **kwargs) |
70d7293c41d6
minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents:
15262
diff
changeset
|
14 |
28752
6b2f9a4e2f97
py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28751
diff
changeset
|
15 print("-" * 70) |
15263
70d7293c41d6
minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents:
15262
diff
changeset
|
16 if type(out) == tuple: |
28752
6b2f9a4e2f97
py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28751
diff
changeset
|
17 print(out[0][:-1]) |
6b2f9a4e2f97
py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28751
diff
changeset
|
18 print("-" * 70) |
28840
8717d4609ab3
tests: stop direct symbol import of pprint.pprint in tests-minirst
Yuya Nishihara <yuya@tcha.org>
parents:
28752
diff
changeset
|
19 pprint.pprint(out[1]) |
10444
e99e0e077bc4
minirst: report pruned container types
Martin Geisler <mg@lazybytes.net>
parents:
10443
diff
changeset
|
20 else: |
28752
6b2f9a4e2f97
py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28751
diff
changeset
|
21 print(out[:-1]) |
6b2f9a4e2f97
py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28751
diff
changeset
|
22 print("-" * 70) |
6b2f9a4e2f97
py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28751
diff
changeset
|
23 print() |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
24 |
15263
70d7293c41d6
minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents:
15262
diff
changeset
|
25 def debugformats(title, text, **kwargs): |
28752
6b2f9a4e2f97
py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28751
diff
changeset
|
26 print("== %s ==" % title) |
15263
70d7293c41d6
minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents:
15262
diff
changeset
|
27 debugformat(text, 60, **kwargs) |
70d7293c41d6
minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents:
15262
diff
changeset
|
28 debugformat(text, 30, **kwargs) |
70d7293c41d6
minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents:
15262
diff
changeset
|
29 debugformat(text, 'html', **kwargs) |
70d7293c41d6
minirst: improve test harness
Matt Mackall <mpm@selenic.com>
parents:
15262
diff
changeset
|
30 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
31 paragraphs = b""" |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
32 This is some text in the first paragraph. |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
33 |
9736
26d3ade60fa6
test-minirst: don't test on invalid reST input
Martin Geisler <mg@lazybytes.net>
parents:
9293
diff
changeset
|
34 A small indented paragraph. |
26d3ade60fa6
test-minirst: don't test on invalid reST input
Martin Geisler <mg@lazybytes.net>
parents:
9293
diff
changeset
|
35 It is followed by some lines |
26d3ade60fa6
test-minirst: don't test on invalid reST input
Martin Geisler <mg@lazybytes.net>
parents:
9293
diff
changeset
|
36 containing random whitespace. |
10289
987df17f85bb
test-minirst: hide trailing whitespace from check-code
Matt Mackall <mpm@selenic.com>
parents:
10065
diff
changeset
|
37 \n \n \nThe third and final paragraph. |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
38 """ |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
39 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
40 debugformats(b'paragraphs', paragraphs) |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
41 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
42 definitions = b""" |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
43 A Term |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
44 Definition. The indented |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
45 lines make up the definition. |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
46 Another Term |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
47 Another definition. The final line in the |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
48 definition determines the indentation, so |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
49 this will be indented with four spaces. |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
50 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
51 A Nested/Indented Term |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
52 Definition. |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
53 """ |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
54 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
55 debugformats(b'definitions', definitions) |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
56 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
57 literals = br""" |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
58 The fully minimized form is the most |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
59 convenient form:: |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
60 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
61 Hello |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
62 literal |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
63 world |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
64 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
65 In the partially minimized form a paragraph |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
66 simply ends with space-double-colon. :: |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
67 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
68 //////////////////////////////////////// |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
69 long un-wrapped line in a literal block |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
70 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
71 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
72 :: |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
73 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
74 This literal block is started with '::', |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
75 the so-called expanded form. The paragraph |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
76 with '::' disappears in the final output. |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
77 """ |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
78 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
79 debugformats(b'literals', literals) |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
80 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
81 lists = b""" |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
82 - This is the first list item. |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
83 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
84 Second paragraph in the first list item. |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
85 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
86 - List items need not be separated |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
87 by a blank line. |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
88 - And will be rendered without |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
89 one in any case. |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
90 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
91 We can have indented lists: |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
92 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
93 - This is an indented list item |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
94 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
95 - Another indented list item:: |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
96 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
97 - A literal block in the middle |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
98 of an indented list. |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
99 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
100 (The above is not a list item since we are in the literal block.) |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
101 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
102 :: |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
103 |
9291
cd5b6a11b607
minirst: indent literal blocks with two spaces
Martin Geisler <mg@lazybytes.net>
parents:
9156
diff
changeset
|
104 Literal block with no indentation (apart from |
cd5b6a11b607
minirst: indent literal blocks with two spaces
Martin Geisler <mg@lazybytes.net>
parents:
9156
diff
changeset
|
105 the two spaces added to all literal blocks). |
9739
75cff8f12910
minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents:
9736
diff
changeset
|
106 |
75cff8f12910
minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents:
9736
diff
changeset
|
107 1. This is an enumerated list (first item). |
75cff8f12910
minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents:
9736
diff
changeset
|
108 2. Continuing with the second item. |
75cff8f12910
minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents:
9736
diff
changeset
|
109 |
75cff8f12910
minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents:
9736
diff
changeset
|
110 (1) foo |
75cff8f12910
minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents:
9736
diff
changeset
|
111 (2) bar |
75cff8f12910
minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents:
9736
diff
changeset
|
112 |
75cff8f12910
minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents:
9736
diff
changeset
|
113 1) Another |
75cff8f12910
minirst: support enumerated lists
Martin Geisler <mg@lazybytes.net>
parents:
9736
diff
changeset
|
114 2) List |
10447
e957cc7cbd14
minirst: support line blocks
Martin Geisler <mg@lazybytes.net>
parents:
10444
diff
changeset
|
115 |
e957cc7cbd14
minirst: support line blocks
Martin Geisler <mg@lazybytes.net>
parents:
10444
diff
changeset
|
116 Line blocks are also a form of list: |
e957cc7cbd14
minirst: support line blocks
Martin Geisler <mg@lazybytes.net>
parents:
10444
diff
changeset
|
117 |
e957cc7cbd14
minirst: support line blocks
Martin Geisler <mg@lazybytes.net>
parents:
10444
diff
changeset
|
118 | This is the first line. |
e957cc7cbd14
minirst: support line blocks
Martin Geisler <mg@lazybytes.net>
parents:
10444
diff
changeset
|
119 The line continues here. |
e957cc7cbd14
minirst: support line blocks
Martin Geisler <mg@lazybytes.net>
parents:
10444
diff
changeset
|
120 | This is the second line. |
31130
6582b3716ae0
minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28840
diff
changeset
|
121 |
6582b3716ae0
minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28840
diff
changeset
|
122 Bullet lists are also detected: |
6582b3716ae0
minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28840
diff
changeset
|
123 |
6582b3716ae0
minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28840
diff
changeset
|
124 * This is the first bullet |
6582b3716ae0
minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28840
diff
changeset
|
125 * This is the second bullet |
6582b3716ae0
minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28840
diff
changeset
|
126 It has 2 lines |
6582b3716ae0
minirst: detect bullet lists using asterisks
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28840
diff
changeset
|
127 * This is the third bullet |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
128 """ |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
129 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
130 debugformats(b'lists', lists) |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
131 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
132 options = b""" |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
133 There is support for simple option lists, |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
134 but only with long options: |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
135 |
13011
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
13009
diff
changeset
|
136 -X, --exclude filter an option with a short and long option with an argument |
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
13009
diff
changeset
|
137 -I, --include an option with both a short option and a long option |
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
13009
diff
changeset
|
138 --all Output all. |
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
13009
diff
changeset
|
139 --both Output both (this description is |
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
13009
diff
changeset
|
140 quite long). |
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
13009
diff
changeset
|
141 --long Output all day long. |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
142 |
13011
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
13009
diff
changeset
|
143 --par This option has two paragraphs in its description. |
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
13009
diff
changeset
|
144 This is the first. |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
145 |
13011
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
13009
diff
changeset
|
146 This is the second. Blank lines may be omitted between |
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
13009
diff
changeset
|
147 options (as above) or left in (as here). |
4936a04b6792
minirst: improved support for option lists.
Erik Zielke <ez@aragost.com>
parents:
13009
diff
changeset
|
148 |
9156
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
149 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
150 The next paragraph looks like an option list, but lacks the two-space |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
151 marker after the option. It is treated as a normal paragraph: |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
152 |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
153 --foo bar baz |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
154 """ |
c9c7e8cdac9c
minimal reStructuredText parser
Martin Geisler <mg@lazybytes.net>
parents:
diff
changeset
|
155 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
156 debugformats(b'options', options) |
9293
e48a48b754d3
minirst: parse field lists
Martin Geisler <mg@lazybytes.net>
parents:
9291
diff
changeset
|
157 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
158 fields = b""" |
10065
a1ae0ed78d1a
minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents:
9739
diff
changeset
|
159 :a: First item. |
a1ae0ed78d1a
minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents:
9739
diff
changeset
|
160 :ab: Second item. Indentation and wrapping |
a1ae0ed78d1a
minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents:
9739
diff
changeset
|
161 is handled automatically. |
9293
e48a48b754d3
minirst: parse field lists
Martin Geisler <mg@lazybytes.net>
parents:
9291
diff
changeset
|
162 |
10065
a1ae0ed78d1a
minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents:
9739
diff
changeset
|
163 Next list: |
a1ae0ed78d1a
minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents:
9739
diff
changeset
|
164 |
a1ae0ed78d1a
minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents:
9739
diff
changeset
|
165 :small: The larger key below triggers full indentation here. |
a1ae0ed78d1a
minirst: improve layout of field lists
Martin Geisler <mg@lazybytes.net>
parents:
9739
diff
changeset
|
166 :much too large: This key is big enough to get its own line. |
9293
e48a48b754d3
minirst: parse field lists
Martin Geisler <mg@lazybytes.net>
parents:
9291
diff
changeset
|
167 """ |
e48a48b754d3
minirst: parse field lists
Martin Geisler <mg@lazybytes.net>
parents:
9291
diff
changeset
|
168 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
169 debugformats(b'fields', fields) |
10443
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
170 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
171 containers = b""" |
10443
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
172 Normal output. |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
173 |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
174 .. container:: debug |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
175 |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
176 Initial debug output. |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
177 |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
178 .. container:: verbose |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
179 |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
180 Verbose output. |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
181 |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
182 .. container:: debug |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
183 |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
184 Debug output. |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
185 """ |
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
186 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
187 debugformats(b'containers (normal)', containers) |
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
188 debugformats(b'containers (verbose)', containers, keep=['verbose']) |
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
189 debugformats(b'containers (debug)', containers, keep=['debug']) |
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
190 debugformats(b'containers (verbose debug)', containers, |
10443
62d484a81dfe
minirst: support containers
Martin Geisler <mg@lazybytes.net>
parents:
10289
diff
changeset
|
191 keep=['verbose', 'debug']) |
10972
0a2c6948f5f4
doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents:
10447
diff
changeset
|
192 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
193 roles = b"""Please see :hg:`add`.""" |
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
194 debugformats(b'roles', roles) |
10977
f4778f942a4e
minirst: add test for sections
Martin Geisler <mg@lazybytes.net>
parents:
10972
diff
changeset
|
195 |
f4778f942a4e
minirst: add test for sections
Martin Geisler <mg@lazybytes.net>
parents:
10972
diff
changeset
|
196 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
197 sections = b""" |
10984
68b7d2d668ce
minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents:
10983
diff
changeset
|
198 Title |
68b7d2d668ce
minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents:
10983
diff
changeset
|
199 ===== |
68b7d2d668ce
minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents:
10983
diff
changeset
|
200 |
68b7d2d668ce
minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents:
10983
diff
changeset
|
201 Section |
68b7d2d668ce
minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents:
10983
diff
changeset
|
202 ------- |
68b7d2d668ce
minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents:
10983
diff
changeset
|
203 |
68b7d2d668ce
minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents:
10983
diff
changeset
|
204 Subsection |
68b7d2d668ce
minirst: support all recommended title adornments
Martin Geisler <mg@lazybytes.net>
parents:
10983
diff
changeset
|
205 '''''''''' |
10983
287a5cdf7743
minirst: correctly format sections containing inline markup
Martin Geisler <mg@lazybytes.net>
parents:
10977
diff
changeset
|
206 |
287a5cdf7743
minirst: correctly format sections containing inline markup
Martin Geisler <mg@lazybytes.net>
parents:
10977
diff
changeset
|
207 Markup: ``foo`` and :hg:`help` |
287a5cdf7743
minirst: correctly format sections containing inline markup
Martin Geisler <mg@lazybytes.net>
parents:
10977
diff
changeset
|
208 ------------------------------ |
10977
f4778f942a4e
minirst: add test for sections
Martin Geisler <mg@lazybytes.net>
parents:
10972
diff
changeset
|
209 """ |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
210 debugformats(b'sections', sections) |
12388
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
211 |
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
212 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
213 admonitions = b""" |
12388
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
214 .. note:: |
19996
52b437586435
tests: modify minirst test input to new format
Simon Heimberg <simohe@besonet.ch>
parents:
16815
diff
changeset
|
215 |
12388
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
216 This is a note |
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
217 |
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
218 - Bullet 1 |
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
219 - Bullet 2 |
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
220 |
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
221 .. warning:: This is a warning Second |
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
222 input line of warning |
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
223 |
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
224 .. danger:: |
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
225 This is danger |
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
226 """ |
75f044d4dbf5
minirst: Support for admonitions
Erik Zielke <ez@aragost.com>
parents:
10984
diff
changeset
|
227 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
228 debugformats(b'admonitions', admonitions) |
12819
5082e2f3f8e0
minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents:
12388
diff
changeset
|
229 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
230 comments = b""" |
12819
5082e2f3f8e0
minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents:
12388
diff
changeset
|
231 Some text. |
5082e2f3f8e0
minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents:
12388
diff
changeset
|
232 |
5082e2f3f8e0
minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents:
12388
diff
changeset
|
233 .. A comment |
5082e2f3f8e0
minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents:
12388
diff
changeset
|
234 |
5082e2f3f8e0
minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents:
12388
diff
changeset
|
235 .. An indented comment |
5082e2f3f8e0
minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents:
12388
diff
changeset
|
236 |
5082e2f3f8e0
minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents:
12388
diff
changeset
|
237 Some indented text. |
13009
54be08fa4d1d
minirst: modified minirst to also recognize empty comments.
Erik Zielke <ez@aragost.com>
parents:
12865
diff
changeset
|
238 |
54be08fa4d1d
minirst: modified minirst to also recognize empty comments.
Erik Zielke <ez@aragost.com>
parents:
12865
diff
changeset
|
239 .. |
54be08fa4d1d
minirst: modified minirst to also recognize empty comments.
Erik Zielke <ez@aragost.com>
parents:
12865
diff
changeset
|
240 |
54be08fa4d1d
minirst: modified minirst to also recognize empty comments.
Erik Zielke <ez@aragost.com>
parents:
12865
diff
changeset
|
241 Empty comment above |
12819
5082e2f3f8e0
minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents:
12388
diff
changeset
|
242 """ |
5082e2f3f8e0
minirst: ignore comments
Martin Geisler <mg@lazybytes.net>
parents:
12388
diff
changeset
|
243 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
244 debugformats(b'comments', comments) |
15037
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
13011
diff
changeset
|
245 |
15039
c981f4a9ea74
minirst: add a helper function to build an RST table from an array
Matt Mackall <mpm@selenic.com>
parents:
15037
diff
changeset
|
246 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
247 data = [[b'a', b'b', b'c'], |
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
248 [b'1', b'2', b'3'], |
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
249 [b'foo', b'bar', b'baz this list is very very very long man']] |
15039
c981f4a9ea74
minirst: add a helper function to build an RST table from an array
Matt Mackall <mpm@selenic.com>
parents:
15037
diff
changeset
|
250 |
16815
e740746ea557
minirst: generate tables as a list of joined lines
Olav Reinert <seroton10@gmail.com>
parents:
15263
diff
changeset
|
251 rst = minirst.maketable(data, 2, True) |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
252 table = b''.join(rst) |
15039
c981f4a9ea74
minirst: add a helper function to build an RST table from an array
Matt Mackall <mpm@selenic.com>
parents:
15037
diff
changeset
|
253 |
28752
6b2f9a4e2f97
py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28751
diff
changeset
|
254 print(table) |
15037
df47381b41d6
minirst: add simple table support
Matt Mackall <mpm@selenic.com>
parents:
13011
diff
changeset
|
255 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
256 debugformats(b'table', table) |
20654
af9d9b778550
minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch>
parents:
19996
diff
changeset
|
257 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
258 data = [[b's', b'long', b'line\ngoes on here'], |
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
259 [b'', b'xy', b'tried to fix here\n by indenting']] |
20654
af9d9b778550
minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch>
parents:
19996
diff
changeset
|
260 |
af9d9b778550
minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch>
parents:
19996
diff
changeset
|
261 rst = minirst.maketable(data, 1, False) |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
262 table = b''.join(rst) |
20654
af9d9b778550
minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch>
parents:
19996
diff
changeset
|
263 |
28752
6b2f9a4e2f97
py3: use print_function in test-minirst.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
28751
diff
changeset
|
264 print(table) |
20654
af9d9b778550
minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch>
parents:
19996
diff
changeset
|
265 |
36706
87b8fc4533ca
py3: add b'' prefixes in tests/test-minirst.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31130
diff
changeset
|
266 debugformats(b'table+nl', table) |
20654
af9d9b778550
minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch>
parents:
19996
diff
changeset
|
267 |