Mercurial > hg
annotate tests/test-config-parselist.py @ 48549:28f0092ec89f
exchange: add fast path for subrepo check on push
Try to check if .hgsub and .hgsubstate exist at all before looking
for them in every changeset to be pushed. The latter can be quite
expensive for large repositories and the existance check is almost free.
Differential Revision: https://phab.mercurial-scm.org/D11956
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Mon, 03 Jan 2022 01:09:56 +0100 |
parents | 6961eca0b3ee |
children |
rev | line source |
---|---|
47950
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
1 """ |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
2 List-valued configuration keys have an ad-hoc microsyntax. From `hg help config`: |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
3 |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
4 > List values are separated by whitespace or comma, except when values are |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
5 > placed in double quotation marks: |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
6 > |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
7 > allow_read = "John Doe, PhD", brian, betty |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
8 > |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
9 > Quotation marks can be escaped by prefixing them with a backslash. Only |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
10 > quotation marks at the beginning of a word is counted as a quotation |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
11 > (e.g., ``foo"bar baz`` is the list of ``foo"bar`` and ``baz``). |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
12 |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
13 That help documentation is fairly light on details, the actual parser has many |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
14 other edge cases. This test tries to cover them. |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
15 """ |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
16 |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
17 from mercurial.utils import stringutil |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
18 |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
19 |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
20 def assert_parselist(input, expected): |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
21 result = stringutil.parselist(input) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
22 if result != expected: |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
23 raise AssertionError( |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
24 "parse_input(%r)\n got %r\nexpected %r" |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
25 % (input, result, expected) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
26 ) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
27 |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
28 |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
29 # Keep these Python tests in sync with the Rust ones in `rust/hg-core/src/config/values.rs` |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
30 |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
31 assert_parselist(b'', []) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
32 assert_parselist(b',', []) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
33 assert_parselist(b'A', [b'A']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
34 assert_parselist(b'B,B', [b'B', b'B']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
35 assert_parselist(b', C, ,C,', [b'C', b'C']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
36 assert_parselist(b'"', [b'"']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
37 assert_parselist(b'""', [b'', b'']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
38 assert_parselist(b'D,"', [b'D', b'"']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
39 assert_parselist(b'E,""', [b'E', b'', b'']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
40 assert_parselist(b'"F,F"', [b'F,F']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
41 assert_parselist(b'"G,G', [b'"G', b'G']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
42 assert_parselist(b'"H \\",\\"H', [b'"H', b',', b'H']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
43 assert_parselist(b'I,I"', [b'I', b'I"']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
44 assert_parselist(b'J,"J', [b'J', b'"J']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
45 assert_parselist(b'K K', [b'K', b'K']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
46 assert_parselist(b'"K" K', [b'K', b'K']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
47 assert_parselist(b'L\tL', [b'L', b'L']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
48 assert_parselist(b'"L"\tL', [b'L', b'', b'L']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
49 assert_parselist(b'M\x0bM', [b'M', b'M']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
50 assert_parselist(b'"M"\x0bM', [b'M', b'', b'M']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
51 assert_parselist(b'"N" , ,"', [b'N"']) |
6961eca0b3ee
rhg: Port Python’s `ui.configlist` as `Config::get_list`
Simon Sapin <simon.sapin@octobus.net>
parents:
diff
changeset
|
52 assert_parselist(b'" ,O, ', [b'"', b'O']) |