Mercurial > hg
annotate tests/test-config-parselist.py @ 52274:6aa4ee2bb128 stable
contrib: add a script to build all of the wheels on macOS
This is mostly a translation of `contrib/packaging/build-windows-wheels.bat`,
except the default pythons to build can be inferred from `setup.py` and/or
`pyproject.toml`, and all use the same configuration. All we need to do is
force the building of translation files, tell it to skip pypy wheels, and tell
it to build universal2 wheels instead of for the current architecture.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Fri, 15 Nov 2024 21:52:31 -0500 |
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']) |