annotate tests/test-minifileset.py @ 51521:0d4a6ab3c8da

branchcache-v3: use more explicit header line The key-value approach is clearer and gives more rooms to have the format evolve in a clear way. It also provides extension (like topic) simpler way to extend the validation scheme. This is just a small evolution, the V3 format is still a work in progress.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 26 Feb 2024 15:44:44 +0100
parents 6000f5b25c9b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35616
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
1 from mercurial import minifileset
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
2
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
3
35616
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
4 def check(text, truecases, falsecases):
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
5 f = minifileset.compile(text)
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
6 for args in truecases:
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
7 if not f(*args):
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
8 print('unexpected: %r should include %r' % (text, args))
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
9 for args in falsecases:
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
10 if f(*args):
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
11 print('unexpected: %r should exclude %r' % (text, args))
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
12
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
13
37877
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
14 check(b'all()', [(b'a.php', 123), (b'b.txt', 0)], [])
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
15 check(b'none()', [], [(b'a.php', 123), (b'b.txt', 0)])
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
16 check(b'!!!!((!(!!all())))', [], [(b'a.php', 123), (b'b.txt', 0)])
35616
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
17
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
18 check(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
19 b'"path:a" & (**.b | **.c)', [(b'a/b.b', 0), (b'a/c.c', 0)], [(b'b/c.c', 0)]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
20 )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
21 check(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
22 b'(path:a & **.b) | **.c', [(b'a/b.b', 0), (b'a/c.c', 0), (b'b/c.c', 0)], []
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
23 )
35616
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
24
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
25 check(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
26 b'**.bin - size("<20B")', [(b'b.bin', 21)], [(b'a.bin', 11), (b'b.txt', 21)]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
27 )
35616
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
28
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
29 check(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
30 b'!!**.bin or size(">20B") + "path:bin" or !size(">10")',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
31 [(b'a.bin', 11), (b'b.txt', 21), (b'bin/abc', 11)],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
32 [(b'a.notbin', 11), (b'b.txt', 11), (b'bin2/abc', 11)],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
33 )
35616
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
34
37877
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
35 check(
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
36 b'(**.php and size(">10KB")) | **.zip | ("path:bin" & !"path:bin/README") '
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
37 b' | size(">1M")',
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
38 [(b'a.php', 15000), (b'a.zip', 0), (b'bin/a', 0), (b'bin/README', 1e7)],
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
39 [(b'a.php', 5000), (b'b.zip2', 0), (b't/bin/a', 0), (b'bin/README', 1)],
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40098
diff changeset
40 )