author | Martin von Zweigbergk <martinvonz@google.com> |
Fri, 30 Nov 2018 16:21:37 -0800 | |
branch | stable |
changeset 40790 | f07d4f94f098 |
parent 40098 | 8a08aefa9273 |
child 43076 | 2372284d9457 |
permissions | -rw-r--r-- |
35616
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
1 |
from __future__ import absolute_import |
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
2 |
from __future__ import print_function |
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
3 |
|
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
4 |
from mercurial import minifileset |
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
5 |
|
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
6 |
def check(text, truecases, falsecases): |
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
7 |
f = minifileset.compile(text) |
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
8 |
for args in truecases: |
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
9 |
if not f(*args): |
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
10 |
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
|
11 |
for args in falsecases: |
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
12 |
if f(*args): |
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
13 |
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
|
14 |
|
37877
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
15 |
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
|
16 |
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
|
17 |
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
|
18 |
|
37877
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
19 |
check(b'"path:a" & (**.b | **.c)', |
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
20 |
[(b'a/b.b', 0), (b'a/c.c', 0)], [(b'b/c.c', 0)]) |
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
21 |
check(b'(path:a & **.b) | **.c', |
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
22 |
[(b'a/b.b', 0), (b'a/c.c', 0), (b'b/c.c', 0)], []) |
35616
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
23 |
|
37877
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
24 |
check(b'**.bin - size("<20B")', |
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
25 |
[(b'b.bin', 21)], [(b'a.bin', 11), (b'b.txt', 21)]) |
35616
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
26 |
|
37877
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
27 |
check(b'!!**.bin or size(">20B") + "path:bin" or !size(">10")', |
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
28 |
[(b'a.bin', 11), (b'b.txt', 21), (b'bin/abc', 11)], |
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
29 |
[(b'a.notbin', 11), (b'b.txt', 11), (b'bin2/abc', 11)]) |
35616
706aa203b396
fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff
changeset
|
30 |
|
37877
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
31 |
check( |
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
32 |
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
|
33 |
b' | size(">1M")', |
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
34 |
[(b'a.php', 15000), (b'a.zip', 0), (b'bin/a', 0), (b'bin/README', 1e7)], |
2cdae2582d8a
tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents:
35741
diff
changeset
|
35 |
[(b'a.php', 5000), (b'b.zip2', 0), (b't/bin/a', 0), (b'bin/README', 1)]) |