tests/test-minifileset.py
author Martin von Zweigbergk <martinvonz@google.com>
Fri, 13 Jul 2018 11:26:46 -0700
changeset 41042 7db1619af061
parent 40098 8a08aefa9273
child 43076 2372284d9457
permissions -rw-r--r--
tests: add test for narrow+share For how narrow+share is supposed to work, see https://www.mercurial-scm.org/wiki/NarrowSharePlan. Differential Revision: https://phab.mercurial-scm.org/D5276
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
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)])