tests/test-match.py
author Pulkit Goyal <7895pulkit@gmail.com>
Mon, 24 Aug 2020 15:20:09 +0530
changeset 45468 09edbff6ae8d
parent 43964 8f67735344ae
child 45942 89a2afe31e82
permissions -rw-r--r--
merge: store ACTION_KEEP_ABSENT when we are keeping the file absent locally If a file is not present on the local side, and it's unchanged between other merge parent and ancestor, we don't use any action, neither we had a if-else branch for that condition. This leads to bid-merge missing that there is a such action possible which can be performed. As test changes demonstrate, we now choose the locally deleted side instead of choosing the remote one consistently. This is also wrong behavior which is resulted because of missing possible action. It will be fixed in next patch. This whole logic is not acurrate as we should prompt user on what to do when this kind of criss-cross merge is in play. Differential Revision: https://phab.mercurial-scm.org/D8940
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33582
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     1
from __future__ import absolute_import
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     2
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     3
import unittest
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     4
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     5
import silenttestrunner
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     6
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     7
from mercurial import (
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
     8
    match as matchmod,
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
     9
    util,
33582
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    10
)
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    11
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
    12
43949
8b1a9ba375e5 match: make sure `root` argument is always an absolute path (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 43375
diff changeset
    13
noop_auditor = lambda name: None
8b1a9ba375e5 match: make sure `root` argument is always an absolute path (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 43375
diff changeset
    14
8b1a9ba375e5 match: make sure `root` argument is always an absolute path (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 43375
diff changeset
    15
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    16
class BaseMatcherTests(unittest.TestCase):
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    17
    def testVisitdir(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
    18
        m = matchmod.basematcher()
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
    19
        self.assertTrue(m.visitdir(b''))
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    20
        self.assertTrue(m.visitdir(b'dir'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    21
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
    22
    def testVisitchildrenset(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
    23
        m = matchmod.basematcher()
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
    24
        self.assertEqual(m.visitchildrenset(b''), b'this')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    25
        self.assertEqual(m.visitchildrenset(b'dir'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
    26
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
    27
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    28
class AlwaysMatcherTests(unittest.TestCase):
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    29
    def testVisitdir(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
    30
        m = matchmod.alwaysmatcher()
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
    31
        self.assertEqual(m.visitdir(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    32
        self.assertEqual(m.visitdir(b'dir'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    33
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
    34
    def testVisitchildrenset(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
    35
        m = matchmod.alwaysmatcher()
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
    36
        self.assertEqual(m.visitchildrenset(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    37
        self.assertEqual(m.visitchildrenset(b'dir'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
    38
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
    39
33582
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    40
class NeverMatcherTests(unittest.TestCase):
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    41
    def testVisitdir(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
    42
        m = matchmod.nevermatcher()
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
    43
        self.assertFalse(m.visitdir(b''))
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    44
        self.assertFalse(m.visitdir(b'dir'))
33582
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
    45
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
    46
    def testVisitchildrenset(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
    47
        m = matchmod.nevermatcher()
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
    48
        self.assertEqual(m.visitchildrenset(b''), set())
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    49
        self.assertEqual(m.visitchildrenset(b'dir'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
    50
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
    51
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    52
class PredicateMatcherTests(unittest.TestCase):
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    53
    # predicatematcher does not currently define either of these methods, so
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    54
    # this is equivalent to BaseMatcherTests.
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    55
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    56
    def testVisitdir(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
    57
        m = matchmod.predicatematcher(lambda *a: False)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
    58
        self.assertTrue(m.visitdir(b''))
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    59
        self.assertTrue(m.visitdir(b'dir'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    60
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
    61
    def testVisitchildrenset(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
    62
        m = matchmod.predicatematcher(lambda *a: False)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
    63
        self.assertEqual(m.visitchildrenset(b''), b'this')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    64
        self.assertEqual(m.visitchildrenset(b'dir'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
    65
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
    66
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    67
class PatternMatcherTests(unittest.TestCase):
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    68
    def testVisitdirPrefix(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
    69
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
    70
            util.localpath(b'/repo'), b'', patterns=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
    71
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    72
        assert isinstance(m, matchmod.patternmatcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
    73
        self.assertTrue(m.visitdir(b''))
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    74
        self.assertTrue(m.visitdir(b'dir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    75
        self.assertEqual(m.visitdir(b'dir/subdir'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    76
        # OPT: This should probably be 'all' if its parent is?
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    77
        self.assertTrue(m.visitdir(b'dir/subdir/x'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    78
        self.assertFalse(m.visitdir(b'folder'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    79
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
    80
    def testVisitchildrensetPrefix(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
    81
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
    82
            util.localpath(b'/repo'), b'', patterns=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
    83
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
    84
        assert isinstance(m, matchmod.patternmatcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
    85
        self.assertEqual(m.visitchildrenset(b''), b'this')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    86
        self.assertEqual(m.visitchildrenset(b'dir'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    87
        self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
    88
        # OPT: This should probably be 'all' if its parent is?
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    89
        self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    90
        self.assertEqual(m.visitchildrenset(b'folder'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
    91
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    92
    def testVisitdirRootfilesin(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
    93
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
    94
            util.localpath(b'/repo'), b'', patterns=[b'rootfilesin:dir/subdir'],
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
    95
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    96
        assert isinstance(m, matchmod.patternmatcher)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    97
        self.assertFalse(m.visitdir(b'dir/subdir/x'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
    98
        self.assertFalse(m.visitdir(b'folder'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
    99
        # FIXME: These should probably be True.
42346
38d85ec06552 match: drop unnecessary adding of '' to set of dirs
Martin von Zweigbergk <martinvonz@google.com>
parents: 42341
diff changeset
   100
        self.assertFalse(m.visitdir(b''))
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   101
        self.assertFalse(m.visitdir(b'dir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   102
        self.assertFalse(m.visitdir(b'dir/subdir'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   103
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   104
    def testVisitchildrensetRootfilesin(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   105
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   106
            util.localpath(b'/repo'), b'', patterns=[b'rootfilesin:dir/subdir'],
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   107
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   108
        assert isinstance(m, matchmod.patternmatcher)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   109
        self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   110
        self.assertEqual(m.visitchildrenset(b'folder'), set())
42346
38d85ec06552 match: drop unnecessary adding of '' to set of dirs
Martin von Zweigbergk <martinvonz@google.com>
parents: 42341
diff changeset
   111
        # FIXME: These should probably be {'dir'}, {'subdir'} and 'this',
38d85ec06552 match: drop unnecessary adding of '' to set of dirs
Martin von Zweigbergk <martinvonz@google.com>
parents: 42341
diff changeset
   112
        # respectively, or at least 'this' for all three.
38d85ec06552 match: drop unnecessary adding of '' to set of dirs
Martin von Zweigbergk <martinvonz@google.com>
parents: 42341
diff changeset
   113
        self.assertEqual(m.visitchildrenset(b''), set())
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   114
        self.assertEqual(m.visitchildrenset(b'dir'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   115
        self.assertEqual(m.visitchildrenset(b'dir/subdir'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   116
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   117
    def testVisitdirGlob(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   118
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   119
            util.localpath(b'/repo'), b'', patterns=[b'glob:dir/z*']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   120
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   121
        assert isinstance(m, matchmod.patternmatcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   122
        self.assertTrue(m.visitdir(b''))
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   123
        self.assertTrue(m.visitdir(b'dir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   124
        self.assertFalse(m.visitdir(b'folder'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   125
        # OPT: these should probably be False.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   126
        self.assertTrue(m.visitdir(b'dir/subdir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   127
        self.assertTrue(m.visitdir(b'dir/subdir/x'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   128
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   129
    def testVisitchildrensetGlob(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   130
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   131
            util.localpath(b'/repo'), b'', patterns=[b'glob:dir/z*']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   132
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   133
        assert isinstance(m, matchmod.patternmatcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   134
        self.assertEqual(m.visitchildrenset(b''), b'this')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   135
        self.assertEqual(m.visitchildrenset(b'folder'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   136
        self.assertEqual(m.visitchildrenset(b'dir'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   137
        # OPT: these should probably be set().
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   138
        self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   139
        self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   140
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   141
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   142
class IncludeMatcherTests(unittest.TestCase):
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   143
    def testVisitdirPrefix(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   144
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   145
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   146
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   147
        assert isinstance(m, matchmod.includematcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   148
        self.assertTrue(m.visitdir(b''))
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   149
        self.assertTrue(m.visitdir(b'dir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   150
        self.assertEqual(m.visitdir(b'dir/subdir'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   151
        # OPT: This should probably be 'all' if its parent is?
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   152
        self.assertTrue(m.visitdir(b'dir/subdir/x'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   153
        self.assertFalse(m.visitdir(b'folder'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   154
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   155
    def testVisitchildrensetPrefix(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   156
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   157
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   158
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   159
        assert isinstance(m, matchmod.includematcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   160
        self.assertEqual(m.visitchildrenset(b''), {b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   161
        self.assertEqual(m.visitchildrenset(b'dir'), {b'subdir'})
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   162
        self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   163
        # OPT: This should probably be 'all' if its parent is?
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   164
        self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   165
        self.assertEqual(m.visitchildrenset(b'folder'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   166
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   167
    def testVisitdirRootfilesin(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   168
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   169
            util.localpath(b'/repo'), b'', include=[b'rootfilesin:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   170
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   171
        assert isinstance(m, matchmod.includematcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   172
        self.assertTrue(m.visitdir(b''))
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   173
        self.assertTrue(m.visitdir(b'dir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   174
        self.assertTrue(m.visitdir(b'dir/subdir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   175
        self.assertFalse(m.visitdir(b'dir/subdir/x'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   176
        self.assertFalse(m.visitdir(b'folder'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   177
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   178
    def testVisitchildrensetRootfilesin(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   179
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   180
            util.localpath(b'/repo'), b'', include=[b'rootfilesin:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   181
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   182
        assert isinstance(m, matchmod.includematcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   183
        self.assertEqual(m.visitchildrenset(b''), {b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   184
        self.assertEqual(m.visitchildrenset(b'dir'), {b'subdir'})
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   185
        self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   186
        self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   187
        self.assertEqual(m.visitchildrenset(b'folder'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   188
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   189
    def testVisitdirGlob(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   190
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   191
            util.localpath(b'/repo'), b'', include=[b'glob:dir/z*']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   192
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   193
        assert isinstance(m, matchmod.includematcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   194
        self.assertTrue(m.visitdir(b''))
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   195
        self.assertTrue(m.visitdir(b'dir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   196
        self.assertFalse(m.visitdir(b'folder'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   197
        # OPT: these should probably be False.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   198
        self.assertTrue(m.visitdir(b'dir/subdir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   199
        self.assertTrue(m.visitdir(b'dir/subdir/x'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   200
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   201
    def testVisitchildrensetGlob(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   202
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   203
            util.localpath(b'/repo'), b'', include=[b'glob:dir/z*']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   204
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   205
        assert isinstance(m, matchmod.includematcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   206
        self.assertEqual(m.visitchildrenset(b''), {b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   207
        self.assertEqual(m.visitchildrenset(b'folder'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   208
        self.assertEqual(m.visitchildrenset(b'dir'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   209
        # OPT: these should probably be set().
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   210
        self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   211
        self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   212
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   213
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   214
class ExactMatcherTests(unittest.TestCase):
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   215
    def testVisitdir(self):
41676
0531dff73d0b match: delete unused root and cwd arguments from {always,never,exact}() (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41675
diff changeset
   216
        m = matchmod.exact(files=[b'dir/subdir/foo.txt'])
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   217
        assert isinstance(m, matchmod.exactmatcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   218
        self.assertTrue(m.visitdir(b''))
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   219
        self.assertTrue(m.visitdir(b'dir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   220
        self.assertTrue(m.visitdir(b'dir/subdir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   221
        self.assertFalse(m.visitdir(b'dir/subdir/foo.txt'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   222
        self.assertFalse(m.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   223
        self.assertFalse(m.visitdir(b'dir/subdir/x'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   224
        self.assertFalse(m.visitdir(b'folder'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   225
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   226
    def testVisitchildrenset(self):
41676
0531dff73d0b match: delete unused root and cwd arguments from {always,never,exact}() (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41675
diff changeset
   227
        m = matchmod.exact(files=[b'dir/subdir/foo.txt'])
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   228
        assert isinstance(m, matchmod.exactmatcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   229
        self.assertEqual(m.visitchildrenset(b''), {b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   230
        self.assertEqual(m.visitchildrenset(b'dir'), {b'subdir'})
39261
c9a3f7f5c023 match: make exactmatcher.visitchildrenset return file children as well
Kyle Lippincott <spectral@google.com>
parents: 38963
diff changeset
   231
        self.assertEqual(m.visitchildrenset(b'dir/subdir'), {b'foo.txt'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   232
        self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   233
        self.assertEqual(m.visitchildrenset(b'dir/subdir/foo.txt'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   234
        self.assertEqual(m.visitchildrenset(b'folder'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   235
39261
c9a3f7f5c023 match: make exactmatcher.visitchildrenset return file children as well
Kyle Lippincott <spectral@google.com>
parents: 38963
diff changeset
   236
    def testVisitchildrensetFilesAndDirs(self):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   237
        m = matchmod.exact(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   238
            files=[
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   239
                b'rootfile.txt',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   240
                b'a/file1.txt',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   241
                b'a/b/file2.txt',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   242
                # no file in a/b/c
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   243
                b'a/b/c/d/file4.txt',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   244
            ]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   245
        )
39261
c9a3f7f5c023 match: make exactmatcher.visitchildrenset return file children as well
Kyle Lippincott <spectral@google.com>
parents: 38963
diff changeset
   246
        assert isinstance(m, matchmod.exactmatcher)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   247
        self.assertEqual(m.visitchildrenset(b''), {b'a', b'rootfile.txt'})
39261
c9a3f7f5c023 match: make exactmatcher.visitchildrenset return file children as well
Kyle Lippincott <spectral@google.com>
parents: 38963
diff changeset
   248
        self.assertEqual(m.visitchildrenset(b'a'), {b'b', b'file1.txt'})
c9a3f7f5c023 match: make exactmatcher.visitchildrenset return file children as well
Kyle Lippincott <spectral@google.com>
parents: 38963
diff changeset
   249
        self.assertEqual(m.visitchildrenset(b'a/b'), {b'c', b'file2.txt'})
c9a3f7f5c023 match: make exactmatcher.visitchildrenset return file children as well
Kyle Lippincott <spectral@google.com>
parents: 38963
diff changeset
   250
        self.assertEqual(m.visitchildrenset(b'a/b/c'), {b'd'})
c9a3f7f5c023 match: make exactmatcher.visitchildrenset return file children as well
Kyle Lippincott <spectral@google.com>
parents: 38963
diff changeset
   251
        self.assertEqual(m.visitchildrenset(b'a/b/c/d'), {b'file4.txt'})
c9a3f7f5c023 match: make exactmatcher.visitchildrenset return file children as well
Kyle Lippincott <spectral@google.com>
parents: 38963
diff changeset
   252
        self.assertEqual(m.visitchildrenset(b'a/b/c/d/e'), set())
c9a3f7f5c023 match: make exactmatcher.visitchildrenset return file children as well
Kyle Lippincott <spectral@google.com>
parents: 38963
diff changeset
   253
        self.assertEqual(m.visitchildrenset(b'folder'), set())
c9a3f7f5c023 match: make exactmatcher.visitchildrenset return file children as well
Kyle Lippincott <spectral@google.com>
parents: 38963
diff changeset
   254
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   255
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   256
class DifferenceMatcherTests(unittest.TestCase):
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   257
    def testVisitdirM2always(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   258
        m1 = matchmod.alwaysmatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   259
        m2 = matchmod.alwaysmatcher()
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   260
        dm = matchmod.differencematcher(m1, m2)
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   261
        # dm should be equivalent to a nevermatcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   262
        self.assertFalse(dm.visitdir(b''))
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   263
        self.assertFalse(dm.visitdir(b'dir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   264
        self.assertFalse(dm.visitdir(b'dir/subdir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   265
        self.assertFalse(dm.visitdir(b'dir/subdir/z'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   266
        self.assertFalse(dm.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   267
        self.assertFalse(dm.visitdir(b'dir/subdir/x'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   268
        self.assertFalse(dm.visitdir(b'folder'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   269
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   270
    def testVisitchildrensetM2always(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   271
        m1 = matchmod.alwaysmatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   272
        m2 = matchmod.alwaysmatcher()
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   273
        dm = matchmod.differencematcher(m1, m2)
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   274
        # dm should be equivalent to a nevermatcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   275
        self.assertEqual(dm.visitchildrenset(b''), set())
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   276
        self.assertEqual(dm.visitchildrenset(b'dir'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   277
        self.assertEqual(dm.visitchildrenset(b'dir/subdir'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   278
        self.assertEqual(dm.visitchildrenset(b'dir/subdir/z'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   279
        self.assertEqual(dm.visitchildrenset(b'dir/foo'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   280
        self.assertEqual(dm.visitchildrenset(b'dir/subdir/x'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   281
        self.assertEqual(dm.visitchildrenset(b'folder'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   282
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   283
    def testVisitdirM2never(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   284
        m1 = matchmod.alwaysmatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   285
        m2 = matchmod.nevermatcher()
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   286
        dm = matchmod.differencematcher(m1, m2)
41528
b7a0efb3c370 match: teach diffmatcher.visitdir() to return 'all' if possible
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 39261
diff changeset
   287
        # dm should be equivalent to a alwaysmatcher.
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   288
        #
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   289
        # We're testing Equal-to-True instead of just 'assertTrue' since
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   290
        # assertTrue does NOT verify that it's a bool, just that it's truthy.
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   291
        # While we may want to eventually make these return 'all', they should
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   292
        # not currently do so.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   293
        self.assertEqual(dm.visitdir(b''), b'all')
41530
4dd07bf84608 tests: fix test-match.py on Python3
Augie Fackler <augie@google.com>
parents: 41528
diff changeset
   294
        self.assertEqual(dm.visitdir(b'dir'), b'all')
4dd07bf84608 tests: fix test-match.py on Python3
Augie Fackler <augie@google.com>
parents: 41528
diff changeset
   295
        self.assertEqual(dm.visitdir(b'dir/subdir'), b'all')
4dd07bf84608 tests: fix test-match.py on Python3
Augie Fackler <augie@google.com>
parents: 41528
diff changeset
   296
        self.assertEqual(dm.visitdir(b'dir/subdir/z'), b'all')
4dd07bf84608 tests: fix test-match.py on Python3
Augie Fackler <augie@google.com>
parents: 41528
diff changeset
   297
        self.assertEqual(dm.visitdir(b'dir/foo'), b'all')
4dd07bf84608 tests: fix test-match.py on Python3
Augie Fackler <augie@google.com>
parents: 41528
diff changeset
   298
        self.assertEqual(dm.visitdir(b'dir/subdir/x'), b'all')
4dd07bf84608 tests: fix test-match.py on Python3
Augie Fackler <augie@google.com>
parents: 41528
diff changeset
   299
        self.assertEqual(dm.visitdir(b'folder'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   300
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   301
    def testVisitchildrensetM2never(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   302
        m1 = matchmod.alwaysmatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   303
        m2 = matchmod.nevermatcher()
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   304
        dm = matchmod.differencematcher(m1, m2)
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   305
        # dm should be equivalent to a alwaysmatcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   306
        self.assertEqual(dm.visitchildrenset(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   307
        self.assertEqual(dm.visitchildrenset(b'dir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   308
        self.assertEqual(dm.visitchildrenset(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   309
        self.assertEqual(dm.visitchildrenset(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   310
        self.assertEqual(dm.visitchildrenset(b'dir/foo'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   311
        self.assertEqual(dm.visitchildrenset(b'dir/subdir/x'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   312
        self.assertEqual(dm.visitchildrenset(b'folder'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   313
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   314
    def testVisitdirM2SubdirPrefix(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   315
        m1 = matchmod.alwaysmatcher()
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   316
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   317
            util.localpath(b'/repo'), b'', patterns=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   318
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   319
        dm = matchmod.differencematcher(m1, m2)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   320
        self.assertEqual(dm.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   321
        self.assertEqual(dm.visitdir(b'dir'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   322
        self.assertFalse(dm.visitdir(b'dir/subdir'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   323
        # OPT: We should probably return False for these; we don't because
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   324
        # patternmatcher.visitdir() (our m2) doesn't return 'all' for subdirs of
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   325
        # an 'all' pattern, just True.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   326
        self.assertEqual(dm.visitdir(b'dir/subdir/z'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   327
        self.assertEqual(dm.visitdir(b'dir/subdir/x'), True)
41530
4dd07bf84608 tests: fix test-match.py on Python3
Augie Fackler <augie@google.com>
parents: 41528
diff changeset
   328
        self.assertEqual(dm.visitdir(b'dir/foo'), b'all')
4dd07bf84608 tests: fix test-match.py on Python3
Augie Fackler <augie@google.com>
parents: 41528
diff changeset
   329
        self.assertEqual(dm.visitdir(b'folder'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   330
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   331
    def testVisitchildrensetM2SubdirPrefix(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   332
        m1 = matchmod.alwaysmatcher()
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   333
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   334
            util.localpath(b'/repo'), b'', patterns=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   335
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   336
        dm = matchmod.differencematcher(m1, m2)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   337
        self.assertEqual(dm.visitchildrenset(b''), b'this')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   338
        self.assertEqual(dm.visitchildrenset(b'dir'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   339
        self.assertEqual(dm.visitchildrenset(b'dir/subdir'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   340
        self.assertEqual(dm.visitchildrenset(b'dir/foo'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   341
        self.assertEqual(dm.visitchildrenset(b'folder'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   342
        # OPT: We should probably return set() for these; we don't because
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   343
        # patternmatcher.visitdir() (our m2) doesn't return 'all' for subdirs of
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   344
        # an 'all' pattern, just 'this'.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   345
        self.assertEqual(dm.visitchildrenset(b'dir/subdir/z'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   346
        self.assertEqual(dm.visitchildrenset(b'dir/subdir/x'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   347
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   348
    # We're using includematcher instead of patterns because it behaves slightly
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   349
    # better (giving narrower results) than patternmatcher.
43375
c2c3ee8794dd tests: fix typo "includfe"
Martin von Zweigbergk <martinvonz@google.com>
parents: 43076
diff changeset
   350
    def testVisitdirIncludeInclude(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   351
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   352
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   353
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   354
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   355
            util.localpath(b'/repo'), b'', include=[b'rootfilesin:dir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   356
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   357
        dm = matchmod.differencematcher(m1, m2)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   358
        self.assertEqual(dm.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   359
        self.assertEqual(dm.visitdir(b'dir'), True)
41530
4dd07bf84608 tests: fix test-match.py on Python3
Augie Fackler <augie@google.com>
parents: 41528
diff changeset
   360
        self.assertEqual(dm.visitdir(b'dir/subdir'), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   361
        self.assertFalse(dm.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   362
        self.assertFalse(dm.visitdir(b'folder'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   363
        # OPT: We should probably return False for these; we don't because
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   364
        # patternmatcher.visitdir() (our m2) doesn't return 'all' for subdirs of
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   365
        # an 'all' pattern, just True.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   366
        self.assertEqual(dm.visitdir(b'dir/subdir/z'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   367
        self.assertEqual(dm.visitdir(b'dir/subdir/x'), True)
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   368
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   369
    def testVisitchildrensetIncludeInclude(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   370
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   371
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   372
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   373
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   374
            util.localpath(b'/repo'), b'', include=[b'rootfilesin:dir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   375
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   376
        dm = matchmod.differencematcher(m1, m2)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   377
        self.assertEqual(dm.visitchildrenset(b''), {b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   378
        self.assertEqual(dm.visitchildrenset(b'dir'), {b'subdir'})
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   379
        self.assertEqual(dm.visitchildrenset(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   380
        self.assertEqual(dm.visitchildrenset(b'dir/foo'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   381
        self.assertEqual(dm.visitchildrenset(b'folder'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   382
        # OPT: We should probably return set() for these; we don't because
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   383
        # patternmatcher.visitdir() (our m2) doesn't return 'all' for subdirs of
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   384
        # an 'all' pattern, just 'this'.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   385
        self.assertEqual(dm.visitchildrenset(b'dir/subdir/z'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   386
        self.assertEqual(dm.visitchildrenset(b'dir/subdir/x'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   387
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   388
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   389
class IntersectionMatcherTests(unittest.TestCase):
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   390
    def testVisitdirM2always(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   391
        m1 = matchmod.alwaysmatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   392
        m2 = matchmod.alwaysmatcher()
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   393
        im = matchmod.intersectmatchers(m1, m2)
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   394
        # im should be equivalent to a alwaysmatcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   395
        self.assertEqual(im.visitdir(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   396
        self.assertEqual(im.visitdir(b'dir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   397
        self.assertEqual(im.visitdir(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   398
        self.assertEqual(im.visitdir(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   399
        self.assertEqual(im.visitdir(b'dir/foo'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   400
        self.assertEqual(im.visitdir(b'dir/subdir/x'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   401
        self.assertEqual(im.visitdir(b'folder'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   402
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   403
    def testVisitchildrensetM2always(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   404
        m1 = matchmod.alwaysmatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   405
        m2 = matchmod.alwaysmatcher()
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   406
        im = matchmod.intersectmatchers(m1, m2)
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   407
        # im should be equivalent to a alwaysmatcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   408
        self.assertEqual(im.visitchildrenset(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   409
        self.assertEqual(im.visitchildrenset(b'dir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   410
        self.assertEqual(im.visitchildrenset(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   411
        self.assertEqual(im.visitchildrenset(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   412
        self.assertEqual(im.visitchildrenset(b'dir/foo'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   413
        self.assertEqual(im.visitchildrenset(b'dir/subdir/x'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   414
        self.assertEqual(im.visitchildrenset(b'folder'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   415
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   416
    def testVisitdirM2never(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   417
        m1 = matchmod.alwaysmatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   418
        m2 = matchmod.nevermatcher()
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   419
        im = matchmod.intersectmatchers(m1, m2)
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   420
        # im should be equivalent to a nevermatcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   421
        self.assertFalse(im.visitdir(b''))
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   422
        self.assertFalse(im.visitdir(b'dir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   423
        self.assertFalse(im.visitdir(b'dir/subdir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   424
        self.assertFalse(im.visitdir(b'dir/subdir/z'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   425
        self.assertFalse(im.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   426
        self.assertFalse(im.visitdir(b'dir/subdir/x'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   427
        self.assertFalse(im.visitdir(b'folder'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   428
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   429
    def testVisitchildrensetM2never(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   430
        m1 = matchmod.alwaysmatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   431
        m2 = matchmod.nevermatcher()
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   432
        im = matchmod.intersectmatchers(m1, m2)
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   433
        # im should be equivalent to a nevermqtcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   434
        self.assertEqual(im.visitchildrenset(b''), set())
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   435
        self.assertEqual(im.visitchildrenset(b'dir'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   436
        self.assertEqual(im.visitchildrenset(b'dir/subdir'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   437
        self.assertEqual(im.visitchildrenset(b'dir/subdir/z'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   438
        self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   439
        self.assertEqual(im.visitchildrenset(b'dir/subdir/x'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   440
        self.assertEqual(im.visitchildrenset(b'folder'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   441
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   442
    def testVisitdirM2SubdirPrefix(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   443
        m1 = matchmod.alwaysmatcher()
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   444
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   445
            util.localpath(b'/repo'), b'', patterns=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   446
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   447
        im = matchmod.intersectmatchers(m1, m2)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   448
        self.assertEqual(im.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   449
        self.assertEqual(im.visitdir(b'dir'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   450
        self.assertEqual(im.visitdir(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   451
        self.assertFalse(im.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   452
        self.assertFalse(im.visitdir(b'folder'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   453
        # OPT: We should probably return 'all' for these; we don't because
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   454
        # patternmatcher.visitdir() (our m2) doesn't return 'all' for subdirs of
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   455
        # an 'all' pattern, just True.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   456
        self.assertEqual(im.visitdir(b'dir/subdir/z'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   457
        self.assertEqual(im.visitdir(b'dir/subdir/x'), True)
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   458
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   459
    def testVisitchildrensetM2SubdirPrefix(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   460
        m1 = matchmod.alwaysmatcher()
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   461
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   462
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   463
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   464
        im = matchmod.intersectmatchers(m1, m2)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   465
        self.assertEqual(im.visitchildrenset(b''), {b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   466
        self.assertEqual(im.visitchildrenset(b'dir'), {b'subdir'})
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   467
        self.assertEqual(im.visitchildrenset(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   468
        self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   469
        self.assertEqual(im.visitchildrenset(b'folder'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   470
        # OPT: We should probably return 'all' for these
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   471
        self.assertEqual(im.visitchildrenset(b'dir/subdir/z'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   472
        self.assertEqual(im.visitchildrenset(b'dir/subdir/x'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   473
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   474
    # We're using includematcher instead of patterns because it behaves slightly
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   475
    # better (giving narrower results) than patternmatcher.
43375
c2c3ee8794dd tests: fix typo "includfe"
Martin von Zweigbergk <martinvonz@google.com>
parents: 43076
diff changeset
   476
    def testVisitdirIncludeInclude(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   477
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   478
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   479
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   480
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   481
            util.localpath(b'/repo'), b'', include=[b'rootfilesin:dir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   482
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   483
        im = matchmod.intersectmatchers(m1, m2)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   484
        self.assertEqual(im.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   485
        self.assertEqual(im.visitdir(b'dir'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   486
        self.assertFalse(im.visitdir(b'dir/subdir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   487
        self.assertFalse(im.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   488
        self.assertFalse(im.visitdir(b'folder'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   489
        self.assertFalse(im.visitdir(b'dir/subdir/z'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   490
        self.assertFalse(im.visitdir(b'dir/subdir/x'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   491
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   492
    def testVisitchildrensetIncludeInclude(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   493
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   494
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   495
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   496
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   497
            util.localpath(b'/repo'), b'', include=[b'rootfilesin:dir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   498
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   499
        im = matchmod.intersectmatchers(m1, m2)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   500
        self.assertEqual(im.visitchildrenset(b''), {b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   501
        self.assertEqual(im.visitchildrenset(b'dir'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   502
        self.assertEqual(im.visitchildrenset(b'dir/subdir'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   503
        self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   504
        self.assertEqual(im.visitchildrenset(b'folder'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   505
        self.assertEqual(im.visitchildrenset(b'dir/subdir/z'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   506
        self.assertEqual(im.visitchildrenset(b'dir/subdir/x'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   507
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   508
    # We're using includematcher instead of patterns because it behaves slightly
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   509
    # better (giving narrower results) than patternmatcher.
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   510
    def testVisitdirIncludeInclude2(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   511
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   512
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   513
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   514
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   515
            util.localpath(b'/repo'), b'', include=[b'path:folder']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   516
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   517
        im = matchmod.intersectmatchers(m1, m2)
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   518
        # FIXME: is True correct here?
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   519
        self.assertEqual(im.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   520
        self.assertFalse(im.visitdir(b'dir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   521
        self.assertFalse(im.visitdir(b'dir/subdir'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   522
        self.assertFalse(im.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   523
        self.assertFalse(im.visitdir(b'folder'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   524
        self.assertFalse(im.visitdir(b'dir/subdir/z'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   525
        self.assertFalse(im.visitdir(b'dir/subdir/x'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   526
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   527
    def testVisitchildrensetIncludeInclude2(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   528
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   529
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   530
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   531
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   532
            util.localpath(b'/repo'), b'', include=[b'path:folder']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   533
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   534
        im = matchmod.intersectmatchers(m1, m2)
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   535
        # FIXME: is set() correct here?
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   536
        self.assertEqual(im.visitchildrenset(b''), set())
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   537
        self.assertEqual(im.visitchildrenset(b'dir'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   538
        self.assertEqual(im.visitchildrenset(b'dir/subdir'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   539
        self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   540
        self.assertEqual(im.visitchildrenset(b'folder'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   541
        self.assertEqual(im.visitchildrenset(b'dir/subdir/z'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   542
        self.assertEqual(im.visitchildrenset(b'dir/subdir/x'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   543
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   544
    # We're using includematcher instead of patterns because it behaves slightly
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   545
    # better (giving narrower results) than patternmatcher.
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   546
    def testVisitdirIncludeInclude3(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   547
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   548
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir/x']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   549
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   550
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   551
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   552
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   553
        im = matchmod.intersectmatchers(m1, m2)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   554
        self.assertEqual(im.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   555
        self.assertEqual(im.visitdir(b'dir'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   556
        self.assertEqual(im.visitdir(b'dir/subdir'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   557
        self.assertFalse(im.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   558
        self.assertFalse(im.visitdir(b'folder'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   559
        self.assertFalse(im.visitdir(b'dir/subdir/z'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   560
        # OPT: this should probably be 'all' not True.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   561
        self.assertEqual(im.visitdir(b'dir/subdir/x'), True)
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   562
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   563
    def testVisitchildrensetIncludeInclude3(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   564
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   565
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir/x']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   566
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   567
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   568
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   569
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   570
        im = matchmod.intersectmatchers(m1, m2)
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   571
        self.assertEqual(im.visitchildrenset(b''), {b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   572
        self.assertEqual(im.visitchildrenset(b'dir'), {b'subdir'})
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   573
        self.assertEqual(im.visitchildrenset(b'dir/subdir'), {b'x'})
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   574
        self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   575
        self.assertEqual(im.visitchildrenset(b'folder'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   576
        self.assertEqual(im.visitchildrenset(b'dir/subdir/z'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   577
        # OPT: this should probably be 'all' not 'this'.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   578
        self.assertEqual(im.visitchildrenset(b'dir/subdir/x'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   579
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   580
    # We're using includematcher instead of patterns because it behaves slightly
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   581
    # better (giving narrower results) than patternmatcher.
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   582
    def testVisitdirIncludeInclude4(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   583
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   584
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir/x']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   585
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   586
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   587
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir/z']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   588
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   589
        im = matchmod.intersectmatchers(m1, m2)
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   590
        # OPT: these next three could probably be False as well.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   591
        self.assertEqual(im.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   592
        self.assertEqual(im.visitdir(b'dir'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   593
        self.assertEqual(im.visitdir(b'dir/subdir'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   594
        self.assertFalse(im.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   595
        self.assertFalse(im.visitdir(b'folder'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   596
        self.assertFalse(im.visitdir(b'dir/subdir/z'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   597
        self.assertFalse(im.visitdir(b'dir/subdir/x'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   598
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   599
    def testVisitchildrensetIncludeInclude4(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   600
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   601
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir/x']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   602
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   603
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   604
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir/z']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   605
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   606
        im = matchmod.intersectmatchers(m1, m2)
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   607
        # OPT: these next two could probably be set() as well.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   608
        self.assertEqual(im.visitchildrenset(b''), {b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   609
        self.assertEqual(im.visitchildrenset(b'dir'), {b'subdir'})
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   610
        self.assertEqual(im.visitchildrenset(b'dir/subdir'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   611
        self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   612
        self.assertEqual(im.visitchildrenset(b'folder'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   613
        self.assertEqual(im.visitchildrenset(b'dir/subdir/z'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   614
        self.assertEqual(im.visitchildrenset(b'dir/subdir/x'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   615
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   616
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   617
class UnionMatcherTests(unittest.TestCase):
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   618
    def testVisitdirM2always(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   619
        m1 = matchmod.alwaysmatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   620
        m2 = matchmod.alwaysmatcher()
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   621
        um = matchmod.unionmatcher([m1, m2])
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   622
        # um should be equivalent to a alwaysmatcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   623
        self.assertEqual(um.visitdir(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   624
        self.assertEqual(um.visitdir(b'dir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   625
        self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   626
        self.assertEqual(um.visitdir(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   627
        self.assertEqual(um.visitdir(b'dir/foo'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   628
        self.assertEqual(um.visitdir(b'dir/subdir/x'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   629
        self.assertEqual(um.visitdir(b'folder'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   630
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   631
    def testVisitchildrensetM2always(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   632
        m1 = matchmod.alwaysmatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   633
        m2 = matchmod.alwaysmatcher()
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   634
        um = matchmod.unionmatcher([m1, m2])
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   635
        # um should be equivalent to a alwaysmatcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   636
        self.assertEqual(um.visitchildrenset(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   637
        self.assertEqual(um.visitchildrenset(b'dir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   638
        self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   639
        self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   640
        self.assertEqual(um.visitchildrenset(b'dir/foo'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   641
        self.assertEqual(um.visitchildrenset(b'dir/subdir/x'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   642
        self.assertEqual(um.visitchildrenset(b'folder'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   643
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   644
    def testVisitdirM1never(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   645
        m1 = matchmod.nevermatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   646
        m2 = matchmod.alwaysmatcher()
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   647
        um = matchmod.unionmatcher([m1, m2])
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   648
        # um should be equivalent to a alwaysmatcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   649
        self.assertEqual(um.visitdir(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   650
        self.assertEqual(um.visitdir(b'dir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   651
        self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   652
        self.assertEqual(um.visitdir(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   653
        self.assertEqual(um.visitdir(b'dir/foo'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   654
        self.assertEqual(um.visitdir(b'dir/subdir/x'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   655
        self.assertEqual(um.visitdir(b'folder'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   656
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   657
    def testVisitchildrensetM1never(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   658
        m1 = matchmod.nevermatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   659
        m2 = matchmod.alwaysmatcher()
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   660
        um = matchmod.unionmatcher([m1, m2])
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   661
        # um should be equivalent to a alwaysmatcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   662
        self.assertEqual(um.visitchildrenset(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   663
        self.assertEqual(um.visitchildrenset(b'dir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   664
        self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   665
        self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   666
        self.assertEqual(um.visitchildrenset(b'dir/foo'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   667
        self.assertEqual(um.visitchildrenset(b'dir/subdir/x'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   668
        self.assertEqual(um.visitchildrenset(b'folder'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   669
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   670
    def testVisitdirM2never(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   671
        m1 = matchmod.alwaysmatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   672
        m2 = matchmod.nevermatcher()
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   673
        um = matchmod.unionmatcher([m1, m2])
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   674
        # um should be equivalent to a alwaysmatcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   675
        self.assertEqual(um.visitdir(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   676
        self.assertEqual(um.visitdir(b'dir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   677
        self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   678
        self.assertEqual(um.visitdir(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   679
        self.assertEqual(um.visitdir(b'dir/foo'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   680
        self.assertEqual(um.visitdir(b'dir/subdir/x'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   681
        self.assertEqual(um.visitdir(b'folder'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   682
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   683
    def testVisitchildrensetM2never(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   684
        m1 = matchmod.alwaysmatcher()
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   685
        m2 = matchmod.nevermatcher()
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   686
        um = matchmod.unionmatcher([m1, m2])
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   687
        # um should be equivalent to a alwaysmatcher.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   688
        self.assertEqual(um.visitchildrenset(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   689
        self.assertEqual(um.visitchildrenset(b'dir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   690
        self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   691
        self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   692
        self.assertEqual(um.visitchildrenset(b'dir/foo'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   693
        self.assertEqual(um.visitchildrenset(b'dir/subdir/x'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   694
        self.assertEqual(um.visitchildrenset(b'folder'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   695
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   696
    def testVisitdirM2SubdirPrefix(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   697
        m1 = matchmod.alwaysmatcher()
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   698
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   699
            util.localpath(b'/repo'), b'', patterns=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   700
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   701
        um = matchmod.unionmatcher([m1, m2])
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   702
        self.assertEqual(um.visitdir(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   703
        self.assertEqual(um.visitdir(b'dir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   704
        self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   705
        self.assertEqual(um.visitdir(b'dir/foo'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   706
        self.assertEqual(um.visitdir(b'folder'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   707
        self.assertEqual(um.visitdir(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   708
        self.assertEqual(um.visitdir(b'dir/subdir/x'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   709
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   710
    def testVisitchildrensetM2SubdirPrefix(self):
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   711
        m1 = matchmod.alwaysmatcher()
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   712
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   713
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   714
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   715
        um = matchmod.unionmatcher([m1, m2])
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   716
        self.assertEqual(um.visitchildrenset(b''), b'all')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   717
        self.assertEqual(um.visitchildrenset(b'dir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   718
        self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   719
        self.assertEqual(um.visitchildrenset(b'dir/foo'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   720
        self.assertEqual(um.visitchildrenset(b'folder'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   721
        self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   722
        self.assertEqual(um.visitchildrenset(b'dir/subdir/x'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   723
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   724
    # We're using includematcher instead of patterns because it behaves slightly
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   725
    # better (giving narrower results) than patternmatcher.
43375
c2c3ee8794dd tests: fix typo "includfe"
Martin von Zweigbergk <martinvonz@google.com>
parents: 43076
diff changeset
   726
    def testVisitdirIncludeInclude(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   727
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   728
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   729
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   730
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   731
            util.localpath(b'/repo'), b'', include=[b'rootfilesin:dir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   732
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   733
        um = matchmod.unionmatcher([m1, m2])
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   734
        self.assertEqual(um.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   735
        self.assertEqual(um.visitdir(b'dir'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   736
        self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   737
        self.assertFalse(um.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   738
        self.assertFalse(um.visitdir(b'folder'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   739
        # OPT: These two should probably be 'all' not True.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   740
        self.assertEqual(um.visitdir(b'dir/subdir/z'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   741
        self.assertEqual(um.visitdir(b'dir/subdir/x'), True)
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   742
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   743
    def testVisitchildrensetIncludeInclude(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   744
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   745
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   746
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   747
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   748
            util.localpath(b'/repo'), b'', include=[b'rootfilesin:dir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   749
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   750
        um = matchmod.unionmatcher([m1, m2])
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   751
        self.assertEqual(um.visitchildrenset(b''), {b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   752
        self.assertEqual(um.visitchildrenset(b'dir'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   753
        self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   754
        self.assertEqual(um.visitchildrenset(b'dir/foo'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   755
        self.assertEqual(um.visitchildrenset(b'folder'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   756
        # OPT: These next two could be 'all' instead of 'this'.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   757
        self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   758
        self.assertEqual(um.visitchildrenset(b'dir/subdir/x'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   759
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   760
    # We're using includematcher instead of patterns because it behaves slightly
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   761
    # better (giving narrower results) than patternmatcher.
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   762
    def testVisitdirIncludeInclude2(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   763
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   764
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   765
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   766
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   767
            util.localpath(b'/repo'), b'', include=[b'path:folder']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   768
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   769
        um = matchmod.unionmatcher([m1, m2])
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   770
        self.assertEqual(um.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   771
        self.assertEqual(um.visitdir(b'dir'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   772
        self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   773
        self.assertFalse(um.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   774
        self.assertEqual(um.visitdir(b'folder'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   775
        # OPT: These should probably be 'all' not True.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   776
        self.assertEqual(um.visitdir(b'dir/subdir/z'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   777
        self.assertEqual(um.visitdir(b'dir/subdir/x'), True)
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   778
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   779
    def testVisitchildrensetIncludeInclude2(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   780
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   781
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   782
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   783
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   784
            util.localpath(b'/repo'), b'', include=[b'path:folder']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   785
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   786
        um = matchmod.unionmatcher([m1, m2])
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   787
        self.assertEqual(um.visitchildrenset(b''), {b'folder', b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   788
        self.assertEqual(um.visitchildrenset(b'dir'), {b'subdir'})
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   789
        self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   790
        self.assertEqual(um.visitchildrenset(b'dir/foo'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   791
        self.assertEqual(um.visitchildrenset(b'folder'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   792
        # OPT: These next two could be 'all' instead of 'this'.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   793
        self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   794
        self.assertEqual(um.visitchildrenset(b'dir/subdir/x'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   795
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   796
    # We're using includematcher instead of patterns because it behaves slightly
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   797
    # better (giving narrower results) than patternmatcher.
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   798
    def testVisitdirIncludeInclude3(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   799
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   800
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir/x']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   801
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   802
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   803
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   804
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   805
        um = matchmod.unionmatcher([m1, m2])
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   806
        self.assertEqual(um.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   807
        self.assertEqual(um.visitdir(b'dir'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   808
        self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   809
        self.assertFalse(um.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   810
        self.assertFalse(um.visitdir(b'folder'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   811
        self.assertEqual(um.visitdir(b'dir/subdir/x'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   812
        # OPT: this should probably be 'all' not True.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   813
        self.assertEqual(um.visitdir(b'dir/subdir/z'), True)
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   814
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   815
    def testVisitchildrensetIncludeInclude3(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   816
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   817
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir/x']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   818
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   819
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   820
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   821
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   822
        um = matchmod.unionmatcher([m1, m2])
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   823
        self.assertEqual(um.visitchildrenset(b''), {b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   824
        self.assertEqual(um.visitchildrenset(b'dir'), {b'subdir'})
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   825
        self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   826
        self.assertEqual(um.visitchildrenset(b'dir/foo'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   827
        self.assertEqual(um.visitchildrenset(b'folder'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   828
        self.assertEqual(um.visitchildrenset(b'dir/subdir/x'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   829
        # OPT: this should probably be 'all' not 'this'.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   830
        self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'this')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   831
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   832
    # We're using includematcher instead of patterns because it behaves slightly
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   833
    # better (giving narrower results) than patternmatcher.
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   834
    def testVisitdirIncludeInclude4(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   835
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   836
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir/x']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   837
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   838
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   839
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir/z']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   840
        )
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   841
        um = matchmod.unionmatcher([m1, m2])
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   842
        # OPT: these next three could probably be False as well.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   843
        self.assertEqual(um.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   844
        self.assertEqual(um.visitdir(b'dir'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   845
        self.assertEqual(um.visitdir(b'dir/subdir'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   846
        self.assertFalse(um.visitdir(b'dir/foo'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   847
        self.assertFalse(um.visitdir(b'folder'))
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   848
        self.assertEqual(um.visitdir(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   849
        self.assertEqual(um.visitdir(b'dir/subdir/x'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   850
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   851
    def testVisitchildrensetIncludeInclude4(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   852
        m1 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   853
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir/x']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   854
        )
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   855
        m2 = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   856
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir/z']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   857
        )
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   858
        um = matchmod.unionmatcher([m1, m2])
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   859
        self.assertEqual(um.visitchildrenset(b''), {b'dir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   860
        self.assertEqual(um.visitchildrenset(b'dir'), {b'subdir'})
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   861
        self.assertEqual(um.visitchildrenset(b'dir/subdir'), {b'x', b'z'})
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   862
        self.assertEqual(um.visitchildrenset(b'dir/foo'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   863
        self.assertEqual(um.visitchildrenset(b'folder'), set())
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   864
        self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'all')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   865
        self.assertEqual(um.visitchildrenset(b'dir/subdir/x'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   866
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   867
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   868
class SubdirMatcherTests(unittest.TestCase):
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   869
    def testVisitdir(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   870
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   871
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   872
        )
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   873
        sm = matchmod.subdirmatcher(b'dir', m)
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   874
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   875
        self.assertEqual(sm.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   876
        self.assertEqual(sm.visitdir(b'subdir'), b'all')
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   877
        # OPT: These next two should probably be 'all' not True.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   878
        self.assertEqual(sm.visitdir(b'subdir/x'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   879
        self.assertEqual(sm.visitdir(b'subdir/z'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   880
        self.assertFalse(sm.visitdir(b'foo'))
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   881
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   882
    def testVisitchildrenset(self):
43964
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   883
        m = matchmod.match(
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   884
            util.localpath(b'/repo'), b'', include=[b'path:dir/subdir']
8f67735344ae tests: convert the `root` arg of matchmod.match() to local path separators
Matt Harbison <matt_harbison@yahoo.com>
parents: 43949
diff changeset
   885
        )
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   886
        sm = matchmod.subdirmatcher(b'dir', m)
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   887
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   888
        self.assertEqual(sm.visitchildrenset(b''), {b'subdir'})
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   889
        self.assertEqual(sm.visitchildrenset(b'subdir'), b'all')
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   890
        # OPT: These next two should probably be 'all' not 'this'.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   891
        self.assertEqual(sm.visitchildrenset(b'subdir/x'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   892
        self.assertEqual(sm.visitchildrenset(b'subdir/z'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   893
        self.assertEqual(sm.visitchildrenset(b'foo'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   894
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   895
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   896
class PrefixdirMatcherTests(unittest.TestCase):
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   897
    def testVisitdir(self):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   898
        m = matchmod.match(
43949
8b1a9ba375e5 match: make sure `root` argument is always an absolute path (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 43375
diff changeset
   899
            util.localpath(b'/root/d'),
8b1a9ba375e5 match: make sure `root` argument is always an absolute path (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 43375
diff changeset
   900
            b'e/f',
8b1a9ba375e5 match: make sure `root` argument is always an absolute path (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 43375
diff changeset
   901
            [b'../a.txt', b'b.txt'],
8b1a9ba375e5 match: make sure `root` argument is always an absolute path (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 43375
diff changeset
   902
            auditor=noop_auditor,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   903
        )
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   904
        pm = matchmod.prefixdirmatcher(b'd', m)
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   905
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   906
        # `m` elides 'd' because it's part of the root, and the rest of the
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   907
        # patterns are relative.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   908
        self.assertEqual(bool(m(b'a.txt')), False)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   909
        self.assertEqual(bool(m(b'b.txt')), False)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   910
        self.assertEqual(bool(m(b'e/a.txt')), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   911
        self.assertEqual(bool(m(b'e/b.txt')), False)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   912
        self.assertEqual(bool(m(b'e/f/b.txt')), True)
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   913
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   914
        # The prefix matcher re-adds 'd' to the paths, so they need to be
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   915
        # specified when using the prefixdirmatcher.
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   916
        self.assertEqual(bool(pm(b'a.txt')), False)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   917
        self.assertEqual(bool(pm(b'b.txt')), False)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   918
        self.assertEqual(bool(pm(b'd/e/a.txt')), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   919
        self.assertEqual(bool(pm(b'd/e/b.txt')), False)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   920
        self.assertEqual(bool(pm(b'd/e/f/b.txt')), True)
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   921
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   922
        self.assertEqual(m.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   923
        self.assertEqual(m.visitdir(b'e'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   924
        self.assertEqual(m.visitdir(b'e/f'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   925
        self.assertEqual(m.visitdir(b'e/f/g'), False)
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   926
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   927
        self.assertEqual(pm.visitdir(b''), True)
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   928
        self.assertEqual(pm.visitdir(b'd'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   929
        self.assertEqual(pm.visitdir(b'd/e'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   930
        self.assertEqual(pm.visitdir(b'd/e/f'), True)
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   931
        self.assertEqual(pm.visitdir(b'd/e/f/g'), False)
38953
987d3a4b989f match: add tests for visitdir functionality
spectral <spectral@google.com>
parents: 33582
diff changeset
   932
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   933
    def testVisitchildrenset(self):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   934
        m = matchmod.match(
43949
8b1a9ba375e5 match: make sure `root` argument is always an absolute path (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 43375
diff changeset
   935
            util.localpath(b'/root/d'),
8b1a9ba375e5 match: make sure `root` argument is always an absolute path (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 43375
diff changeset
   936
            b'e/f',
8b1a9ba375e5 match: make sure `root` argument is always an absolute path (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 43375
diff changeset
   937
            [b'../a.txt', b'b.txt'],
8b1a9ba375e5 match: make sure `root` argument is always an absolute path (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 43375
diff changeset
   938
            auditor=noop_auditor,
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   939
        )
41675
ddbebce94665 match: delete unused root and cwd arguments to constructors (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41621
diff changeset
   940
        pm = matchmod.prefixdirmatcher(b'd', m)
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   941
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   942
        # OPT: visitchildrenset could possibly return {'e'} and {'f'} for these
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   943
        # next two, respectively; patternmatcher does not have this
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   944
        # optimization.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   945
        self.assertEqual(m.visitchildrenset(b''), b'this')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   946
        self.assertEqual(m.visitchildrenset(b'e'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   947
        self.assertEqual(m.visitchildrenset(b'e/f'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   948
        self.assertEqual(m.visitchildrenset(b'e/f/g'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   949
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   950
        # OPT: visitchildrenset could possibly return {'d'}, {'e'}, and {'f'}
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   951
        # for these next three, respectively; patternmatcher does not have this
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   952
        # optimization.
42341
27d6956d386b match: use '' instead of '.' for root directory (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 41676
diff changeset
   953
        self.assertEqual(pm.visitchildrenset(b''), b'this')
38963
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   954
        self.assertEqual(pm.visitchildrenset(b'd'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   955
        self.assertEqual(pm.visitchildrenset(b'd/e'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   956
        self.assertEqual(pm.visitchildrenset(b'd/e/f'), b'this')
467b5c1df72d tests: make all the string constants in test-match.py be bytes
Augie Fackler <augie@google.com>
parents: 38958
diff changeset
   957
        self.assertEqual(pm.visitchildrenset(b'd/e/f/g'), set())
38955
081cc9a95b65 match: add visitchildrenset complement to visitdir
spectral <spectral@google.com>
parents: 38953
diff changeset
   958
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 42346
diff changeset
   959
33582
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
   960
if __name__ == '__main__':
44bc181b9835 match: override visitdir() in nevermatcher to return False
Martin von Zweigbergk <martinvonz@google.com>
parents:
diff changeset
   961
    silenttestrunner.main(__name__)