Mercurial > hg
annotate tests/test-config-parselist.py @ 52293:77b38c86915d
ci: add a small script one can run to purge older pipeline
We have over ten thousands old pipeline that take a huge space and that I
suspect to be the source of some slowdown in merge request.
However it seems that the only way to clear them is manually and through the
API, so lets do it.
The script was run today.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 12 Nov 2024 12:45:23 +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']) |