tests/test-minifileset.py
author Augie Fackler <augie@google.com>
Fri, 27 Apr 2018 11:06:49 -0400
changeset 37898 2ae6a3134362
parent 37877 2cdae2582d8a
child 40098 8a08aefa9273
permissions -rw-r--r--
cborutil: port to Python 3 The only problem lurking in here was sorts of mismatched types. The sorts are only for output stability in our tests (sigh), so we just build a phony sort key using the __name__ of types so that we only compare like types against each other. By pure luck, my awful sort key matches the behavior we get "for free" in Python 2, so no test output changes. Differential Revision: https://phab.mercurial-scm.org/D3504
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
import os
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     5
import sys
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     6
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     7
# make it runnable directly without run-tests.py
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     8
sys.path[0:0] = [os.path.join(os.path.dirname(__file__), '..')]
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     9
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    10
from mercurial import minifileset
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    11
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    12
def check(text, truecases, falsecases):
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    13
    f = minifileset.compile(text)
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    14
    for args in truecases:
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    15
        if not f(*args):
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    16
            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
    17
    for args in falsecases:
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    18
        if f(*args):
706aa203b396 fileset: add a lightweight file filtering language
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    19
            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
    20
37877
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
    21
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
    22
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
    23
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
    24
37877
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
    25
check(b'"path:a" & (**.b | **.c)',
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
    26
      [(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
    27
check(b'(path:a & **.b) | **.c',
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
    28
      [(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
    29
37877
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
    30
check(b'**.bin - size("<20B")',
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
    31
      [(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
    32
37877
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
    33
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
    34
      [(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
    35
      [(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
    36
37877
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
    37
check(
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
    38
    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
    39
    b' | size(">1M")',
2cdae2582d8a tests: port test-minifileset.py to Python 3
Augie Fackler <augie@google.com>
parents: 35741
diff changeset
    40
    [(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
    41
    [(b'a.php', 5000), (b'b.zip2', 0), (b't/bin/a', 0), (b'bin/README', 1)])