##// END OF EJS Templates
match: use '' instead of '.' for root directory (API)...
Martin von Zweigbergk -
r42913:27d6956d default
parent child Browse files
Show More
@@ -216,7 +216,7 b' def _narrow(ui, repo, remote, commoninc,'
216 todelete.append(f)
216 todelete.append(f)
217 elif f.startswith('meta/'):
217 elif f.startswith('meta/'):
218 dir = f[5:-13]
218 dir = f[5:-13]
219 dirs = ['.'] + sorted(util.dirs({dir})) + [dir]
219 dirs = [''] + sorted(util.dirs({dir})) + [dir]
220 include = True
220 include = True
221 for d in dirs:
221 for d in dirs:
222 visit = newmatch.visitdir(d)
222 visit = newmatch.visitdir(d)
@@ -1061,7 +1061,7 b' class cgpacker(object):'
1061 while tmfnodes:
1061 while tmfnodes:
1062 tree, nodes = tmfnodes.popitem()
1062 tree, nodes = tmfnodes.popitem()
1063
1063
1064 should_visit = self._matcher.visitdir(tree[:-1] or '.')
1064 should_visit = self._matcher.visitdir(tree[:-1])
1065 if tree and not should_visit:
1065 if tree and not should_visit:
1066 continue
1066 continue
1067
1067
@@ -1093,7 +1093,7 b' class cgpacker(object):'
1093 fullclnodes=self._fullclnodes,
1093 fullclnodes=self._fullclnodes,
1094 precomputedellipsis=self._precomputedellipsis)
1094 precomputedellipsis=self._precomputedellipsis)
1095
1095
1096 if not self._oldmatcher.visitdir(store.tree[:-1] or '.'):
1096 if not self._oldmatcher.visitdir(store.tree[:-1]):
1097 yield tree, deltas
1097 yield tree, deltas
1098 else:
1098 else:
1099 # 'deltas' is a generator and we need to consume it even if
1099 # 'deltas' is a generator and we need to consume it even if
@@ -757,10 +757,10 b' class dirstate(object):'
757 del files[i]
757 del files[i]
758 j += 1
758 j += 1
759
759
760 if not files or '.' in files:
760 if not files or '' in files:
761 files = ['.']
761 files = ['']
762 # constructing the foldmap is expensive, so don't do it for the
762 # constructing the foldmap is expensive, so don't do it for the
763 # common case where files is ['.']
763 # common case where files is ['']
764 normalize = None
764 normalize = None
765 results = dict.fromkeys(subrepos)
765 results = dict.fromkeys(subrepos)
766 results['.hg'] = None
766 results['.hg'] = None
@@ -910,9 +910,7 b' class dirstate(object):'
910 if visitentries == 'this' or visitentries == 'all':
910 if visitentries == 'this' or visitentries == 'all':
911 visitentries = None
911 visitentries = None
912 skip = None
912 skip = None
913 if nd == '.':
913 if nd != '':
914 nd = ''
915 else:
916 skip = '.hg'
914 skip = '.hg'
917 try:
915 try:
918 entries = listdir(join(nd), stat=True, skip=skip)
916 entries = listdir(join(nd), stat=True, skip=skip)
@@ -466,9 +466,9 b' class manifestdict(object):'
466 if match(fn):
466 if match(fn):
467 yield fn
467 yield fn
468
468
469 # for dirstate.walk, files=['.'] means "walk the whole tree".
469 # for dirstate.walk, files=[''] means "walk the whole tree".
470 # follow that here, too
470 # follow that here, too
471 fset.discard('.')
471 fset.discard('')
472
472
473 for fn in sorted(fset):
473 for fn in sorted(fset):
474 if not self.hasdir(fn):
474 if not self.hasdir(fn):
@@ -1038,9 +1038,9 b' class treemanifest(object):'
1038 fset.remove(fn)
1038 fset.remove(fn)
1039 yield fn
1039 yield fn
1040
1040
1041 # for dirstate.walk, files=['.'] means "walk the whole tree".
1041 # for dirstate.walk, files=[''] means "walk the whole tree".
1042 # follow that here, too
1042 # follow that here, too
1043 fset.discard('.')
1043 fset.discard('')
1044
1044
1045 for fn in sorted(fset):
1045 for fn in sorted(fset):
1046 if not self.hasdir(fn):
1046 if not self.hasdir(fn):
@@ -1048,7 +1048,7 b' class treemanifest(object):'
1048
1048
1049 def _walk(self, match):
1049 def _walk(self, match):
1050 '''Recursively generates matching file names for walk().'''
1050 '''Recursively generates matching file names for walk().'''
1051 visit = match.visitchildrenset(self._dir[:-1] or '.')
1051 visit = match.visitchildrenset(self._dir[:-1])
1052 if not visit:
1052 if not visit:
1053 return
1053 return
1054
1054
@@ -1076,7 +1076,7 b' class treemanifest(object):'
1076 '''recursively generate a new manifest filtered by the match argument.
1076 '''recursively generate a new manifest filtered by the match argument.
1077 '''
1077 '''
1078
1078
1079 visit = match.visitchildrenset(self._dir[:-1] or '.')
1079 visit = match.visitchildrenset(self._dir[:-1])
1080 if visit == 'all':
1080 if visit == 'all':
1081 return self.copy()
1081 return self.copy()
1082 ret = treemanifest(self._dir)
1082 ret = treemanifest(self._dir)
@@ -1235,7 +1235,7 b' class treemanifest(object):'
1235 return m._dirs.get(d, emptytree)._node
1235 return m._dirs.get(d, emptytree)._node
1236
1236
1237 # let's skip investigating things that `match` says we do not need.
1237 # let's skip investigating things that `match` says we do not need.
1238 visit = match.visitchildrenset(self._dir[:-1] or '.')
1238 visit = match.visitchildrenset(self._dir[:-1])
1239 visit = self._loadchildrensetlazy(visit)
1239 visit = self._loadchildrensetlazy(visit)
1240 if visit == 'this' or visit == 'all':
1240 if visit == 'this' or visit == 'all':
1241 visit = None
1241 visit = None
@@ -1254,7 +1254,7 b' class treemanifest(object):'
1254
1254
1255 If `matcher` is provided, it only returns subtrees that match.
1255 If `matcher` is provided, it only returns subtrees that match.
1256 """
1256 """
1257 if matcher and not matcher.visitdir(self._dir[:-1] or '.'):
1257 if matcher and not matcher.visitdir(self._dir[:-1]):
1258 return
1258 return
1259 if not matcher or matcher(self._dir[:-1]):
1259 if not matcher or matcher(self._dir[:-1]):
1260 yield self
1260 yield self
@@ -1685,7 +1685,7 b' class manifestlog(object):'
1685 return self._dirmancache[tree][node]
1685 return self._dirmancache[tree][node]
1686
1686
1687 if not self._narrowmatch.always():
1687 if not self._narrowmatch.always():
1688 if not self._narrowmatch.visitdir(tree[:-1] or '.'):
1688 if not self._narrowmatch.visitdir(tree[:-1]):
1689 return excludeddirmanifestctx(tree, node)
1689 return excludeddirmanifestctx(tree, node)
1690 if tree:
1690 if tree:
1691 if self._rootstore._treeondisk:
1691 if self._rootstore._treeondisk:
@@ -1878,7 +1878,7 b' class treemanifestctx(object):'
1878 def _storage(self):
1878 def _storage(self):
1879 narrowmatch = self._manifestlog._narrowmatch
1879 narrowmatch = self._manifestlog._narrowmatch
1880 if not narrowmatch.always():
1880 if not narrowmatch.always():
1881 if not narrowmatch.visitdir(self._dir[:-1] or '.'):
1881 if not narrowmatch.visitdir(self._dir[:-1]):
1882 return excludedmanifestrevlog(self._dir)
1882 return excludedmanifestrevlog(self._dir)
1883 return self._manifestlog.getstorage(self._dir)
1883 return self._manifestlog.getstorage(self._dir)
1884
1884
@@ -380,7 +380,7 b' class basematcher(object):'
380 the following values (assuming the implementation of visitchildrenset
380 the following values (assuming the implementation of visitchildrenset
381 is capable of recognizing this; some implementations are not).
381 is capable of recognizing this; some implementations are not).
382
382
383 '.' -> {'foo', 'qux'}
383 '' -> {'foo', 'qux'}
384 'baz' -> set()
384 'baz' -> set()
385 'foo' -> {'bar'}
385 'foo' -> {'bar'}
386 # Ideally this would be 'all', but since the prefix nature of matchers
386 # Ideally this would be 'all', but since the prefix nature of matchers
@@ -483,6 +483,14 b' class predicatematcher(basematcher):'
483 or pycompat.byterepr(self.matchfn))
483 or pycompat.byterepr(self.matchfn))
484 return '<predicatenmatcher pred=%s>' % s
484 return '<predicatenmatcher pred=%s>' % s
485
485
486 def normalizerootdir(dir, funcname):
487 if dir == '.':
488 util.nouideprecwarn("match.%s() no longer accepts "
489 "'.', use '' instead." % funcname, '5.1')
490 return ''
491 return dir
492
493
486 class patternmatcher(basematcher):
494 class patternmatcher(basematcher):
487 """Matches a set of (kind, pat, source) against a 'root' directory.
495 """Matches a set of (kind, pat, source) against a 'root' directory.
488
496
@@ -507,7 +515,7 b' class patternmatcher(basematcher):'
507 True
515 True
508
516
509 >>> m.files()
517 >>> m.files()
510 ['.', 'foo/a', 'b', '.']
518 ['', 'foo/a', 'b', '']
511 >>> m.exact(b'foo/a')
519 >>> m.exact(b'foo/a')
512 True
520 True
513 >>> m.exact(b'b')
521 >>> m.exact(b'b')
@@ -525,12 +533,13 b' class patternmatcher(basematcher):'
525
533
526 @propertycache
534 @propertycache
527 def _dirs(self):
535 def _dirs(self):
528 return set(util.dirs(self._fileset)) | {'.'}
536 return set(util.dirs(self._fileset)) | {''}
529
537
530 def visitdir(self, dir):
538 def visitdir(self, dir):
539 dir = normalizerootdir(dir, 'visitdir')
531 if self._prefix and dir in self._fileset:
540 if self._prefix and dir in self._fileset:
532 return 'all'
541 return 'all'
533 return ('.' in self._fileset or
542 return ('' in self._fileset or
534 dir in self._fileset or
543 dir in self._fileset or
535 dir in self._dirs or
544 dir in self._dirs or
536 any(parentdir in self._fileset
545 any(parentdir in self._fileset
@@ -564,7 +573,7 b' class _dirchildren(object):'
564 addpath(f)
573 addpath(f)
565
574
566 def addpath(self, path):
575 def addpath(self, path):
567 if path == '.':
576 if path == '':
568 return
577 return
569 dirs = self._dirs
578 dirs = self._dirs
570 findsplitdirs = _dirchildren._findsplitdirs
579 findsplitdirs = _dirchildren._findsplitdirs
@@ -580,14 +589,14 b' class _dirchildren(object):'
580 # - produces a (dirname, basename) tuple, not just 'dirname'
589 # - produces a (dirname, basename) tuple, not just 'dirname'
581 # - includes root dir
590 # - includes root dir
582 # Unlike manifest._splittopdir, this does not suffix `dirname` with a
591 # Unlike manifest._splittopdir, this does not suffix `dirname` with a
583 # slash, and produces '.' for the root instead of ''.
592 # slash.
584 oldpos = len(path)
593 oldpos = len(path)
585 pos = path.rfind('/')
594 pos = path.rfind('/')
586 while pos != -1:
595 while pos != -1:
587 yield path[:pos], path[pos + 1:oldpos]
596 yield path[:pos], path[pos + 1:oldpos]
588 oldpos = pos
597 oldpos = pos
589 pos = path.rfind('/', 0, pos)
598 pos = path.rfind('/', 0, pos)
590 yield '.', path[:oldpos]
599 yield '', path[:oldpos]
591
600
592 def get(self, path):
601 def get(self, path):
593 return self._dirs.get(path, set())
602 return self._dirs.get(path, set())
@@ -609,9 +618,10 b' class includematcher(basematcher):'
609 self._parents = set(parents)
618 self._parents = set(parents)
610
619
611 def visitdir(self, dir):
620 def visitdir(self, dir):
621 dir = normalizerootdir(dir, 'visitdir')
612 if self._prefix and dir in self._roots:
622 if self._prefix and dir in self._roots:
613 return 'all'
623 return 'all'
614 return ('.' in self._roots or
624 return ('' in self._roots or
615 dir in self._roots or
625 dir in self._roots or
616 dir in self._dirs or
626 dir in self._dirs or
617 dir in self._parents or
627 dir in self._parents or
@@ -635,7 +645,7 b' class includematcher(basematcher):'
635 return 'all'
645 return 'all'
636 # Note: this does *not* include the 'dir in self._parents' case from
646 # Note: this does *not* include the 'dir in self._parents' case from
637 # visitdir, that's handled below.
647 # visitdir, that's handled below.
638 if ('.' in self._roots or
648 if ('' in self._roots or
639 dir in self._roots or
649 dir in self._roots or
640 dir in self._dirs or
650 dir in self._dirs or
641 any(parentdir in self._roots
651 any(parentdir in self._roots
@@ -683,22 +693,25 b' class exactmatcher(basematcher):'
683
693
684 @propertycache
694 @propertycache
685 def _dirs(self):
695 def _dirs(self):
686 return set(util.dirs(self._fileset)) | {'.'}
696 return set(util.dirs(self._fileset)) | {''}
687
697
688 def visitdir(self, dir):
698 def visitdir(self, dir):
699 dir = normalizerootdir(dir, 'visitdir')
689 return dir in self._dirs
700 return dir in self._dirs
690
701
691 def visitchildrenset(self, dir):
702 def visitchildrenset(self, dir):
703 dir = normalizerootdir(dir, 'visitchildrenset')
704
692 if not self._fileset or dir not in self._dirs:
705 if not self._fileset or dir not in self._dirs:
693 return set()
706 return set()
694
707
695 candidates = self._fileset | self._dirs - {'.'}
708 candidates = self._fileset | self._dirs - {''}
696 if dir != '.':
709 if dir != '':
697 d = dir + '/'
710 d = dir + '/'
698 candidates = set(c[len(d):] for c in candidates if
711 candidates = set(c[len(d):] for c in candidates if
699 c.startswith(d))
712 c.startswith(d))
700 # self._dirs includes all of the directories, recursively, so if
713 # self._dirs includes all of the directories, recursively, so if
701 # we're attempting to match foo/bar/baz.txt, it'll have '.', 'foo',
714 # we're attempting to match foo/bar/baz.txt, it'll have '', 'foo',
702 # 'foo/bar' in it. Thus we can safely ignore a candidate that has a
715 # 'foo/bar' in it. Thus we can safely ignore a candidate that has a
703 # '/' in it, indicating a it's for a subdir-of-a-subdir; the
716 # '/' in it, indicating a it's for a subdir-of-a-subdir; the
704 # immediate subdir will be in there without a slash.
717 # immediate subdir will be in there without a slash.
@@ -772,7 +785,7 b' class differencematcher(basematcher):'
772 # Possible values for m1: set(...), set()
785 # Possible values for m1: set(...), set()
773 # Possible values for m2: 'this', set(...)
786 # Possible values for m2: 'this', set(...)
774 # We ignore m2's set results. They're possibly incorrect:
787 # We ignore m2's set results. They're possibly incorrect:
775 # m1 = path:dir/subdir, m2=rootfilesin:dir, visitchildrenset('.'):
788 # m1 = path:dir/subdir, m2=rootfilesin:dir, visitchildrenset(''):
776 # m1 returns {'dir'}, m2 returns {'dir'}, if we subtracted we'd
789 # m1 returns {'dir'}, m2 returns {'dir'}, if we subtracted we'd
777 # return set(), which is *not* correct, we still need to visit 'dir'!
790 # return set(), which is *not* correct, we still need to visit 'dir'!
778 return m1_set
791 return m1_set
@@ -918,14 +931,16 b' class subdirmatcher(basematcher):'
918 return self._matcher.matchfn(self._path + "/" + f)
931 return self._matcher.matchfn(self._path + "/" + f)
919
932
920 def visitdir(self, dir):
933 def visitdir(self, dir):
921 if dir == '.':
934 dir = normalizerootdir(dir, 'visitdir')
935 if dir == '':
922 dir = self._path
936 dir = self._path
923 else:
937 else:
924 dir = self._path + "/" + dir
938 dir = self._path + "/" + dir
925 return self._matcher.visitdir(dir)
939 return self._matcher.visitdir(dir)
926
940
927 def visitchildrenset(self, dir):
941 def visitchildrenset(self, dir):
928 if dir == '.':
942 dir = normalizerootdir(dir, 'visitchildrenset')
943 if dir == '':
929 dir = self._path
944 dir = self._path
930 else:
945 else:
931 dir = self._path + "/" + dir
946 dir = self._path + "/" + dir
@@ -994,18 +1009,18 b' class prefixdirmatcher(basematcher):'
994
1009
995 @propertycache
1010 @propertycache
996 def _pathdirs(self):
1011 def _pathdirs(self):
997 return set(util.finddirs(self._path)) | {'.'}
1012 return set(util.finddirs(self._path)) | {''}
998
1013
999 def visitdir(self, dir):
1014 def visitdir(self, dir):
1000 if dir == self._path:
1015 if dir == self._path:
1001 return self._matcher.visitdir('.')
1016 return self._matcher.visitdir('')
1002 if dir.startswith(self._pathprefix):
1017 if dir.startswith(self._pathprefix):
1003 return self._matcher.visitdir(dir[len(self._pathprefix):])
1018 return self._matcher.visitdir(dir[len(self._pathprefix):])
1004 return dir in self._pathdirs
1019 return dir in self._pathdirs
1005
1020
1006 def visitchildrenset(self, dir):
1021 def visitchildrenset(self, dir):
1007 if dir == self._path:
1022 if dir == self._path:
1008 return self._matcher.visitchildrenset('.')
1023 return self._matcher.visitchildrenset('')
1009 if dir.startswith(self._pathprefix):
1024 if dir.startswith(self._pathprefix):
1010 return self._matcher.visitchildrenset(dir[len(self._pathprefix):])
1025 return self._matcher.visitchildrenset(dir[len(self._pathprefix):])
1011 if dir in self._pathdirs:
1026 if dir in self._pathdirs:
@@ -1197,7 +1212,7 b' def _regex(kind, pat, globsuffix):'
1197 'not a regex pattern: %s:%s' % (kind, pat)
1212 'not a regex pattern: %s:%s' % (kind, pat)
1198 )
1213 )
1199
1214
1200 if not pat:
1215 if not pat and kind in ('glob', 'relpath'):
1201 return ''
1216 return ''
1202 if kind == 're':
1217 if kind == 're':
1203 return pat
1218 return pat
@@ -1341,13 +1356,17 b' def _patternrootsanddirs(kindpats):'
1341 if '[' in p or '{' in p or '*' in p or '?' in p:
1356 if '[' in p or '{' in p or '*' in p or '?' in p:
1342 break
1357 break
1343 root.append(p)
1358 root.append(p)
1344 r.append('/'.join(root) or '.')
1359 r.append('/'.join(root))
1345 elif kind in ('relpath', 'path'):
1360 elif kind in ('relpath', 'path'):
1346 r.append(pat or '.')
1361 if pat == '.':
1362 pat = ''
1363 r.append(pat)
1347 elif kind in ('rootfilesin',):
1364 elif kind in ('rootfilesin',):
1348 d.append(pat or '.')
1365 if pat == '.':
1366 pat = ''
1367 d.append(pat)
1349 else: # relglob, re, relre
1368 else: # relglob, re, relre
1350 r.append('.')
1369 r.append('')
1351 return r, d
1370 return r, d
1352
1371
1353 def _roots(kindpats):
1372 def _roots(kindpats):
@@ -1367,18 +1386,18 b' def _rootsdirsandparents(kindpats):'
1367 >>> _rootsdirsandparents(
1386 >>> _rootsdirsandparents(
1368 ... [(b'glob', b'g/h/*', b''), (b'glob', b'g/h', b''),
1387 ... [(b'glob', b'g/h/*', b''), (b'glob', b'g/h', b''),
1369 ... (b'glob', b'g*', b'')])
1388 ... (b'glob', b'g*', b'')])
1370 (['g/h', 'g/h', '.'], [], ['g', '.'])
1389 (['g/h', 'g/h', ''], [], ['g', ''])
1371 >>> _rootsdirsandparents(
1390 >>> _rootsdirsandparents(
1372 ... [(b'rootfilesin', b'g/h', b''), (b'rootfilesin', b'', b'')])
1391 ... [(b'rootfilesin', b'g/h', b''), (b'rootfilesin', b'', b'')])
1373 ([], ['g/h', '.'], ['g', '.'])
1392 ([], ['g/h', ''], ['g', ''])
1374 >>> _rootsdirsandparents(
1393 >>> _rootsdirsandparents(
1375 ... [(b'relpath', b'r', b''), (b'path', b'p/p', b''),
1394 ... [(b'relpath', b'r', b''), (b'path', b'p/p', b''),
1376 ... (b'path', b'', b'')])
1395 ... (b'path', b'', b'')])
1377 (['r', 'p/p', '.'], [], ['p', '.'])
1396 (['r', 'p/p', ''], [], ['p', ''])
1378 >>> _rootsdirsandparents(
1397 >>> _rootsdirsandparents(
1379 ... [(b'relglob', b'rg*', b''), (b're', b're/', b''),
1398 ... [(b'relglob', b'rg*', b''), (b're', b're/', b''),
1380 ... (b'relre', b'rr', b'')])
1399 ... (b'relre', b'rr', b'')])
1381 (['.', '.', '.'], [], ['.'])
1400 (['', '', ''], [], [''])
1382 '''
1401 '''
1383 r, d = _patternrootsanddirs(kindpats)
1402 r, d = _patternrootsanddirs(kindpats)
1384
1403
@@ -1388,7 +1407,7 b' def _rootsdirsandparents(kindpats):'
1388 p.extend(util.dirs(d))
1407 p.extend(util.dirs(d))
1389 p.extend(util.dirs(r))
1408 p.extend(util.dirs(r))
1390 # util.dirs() does not include the root directory, so add it manually
1409 # util.dirs() does not include the root directory, so add it manually
1391 p.append('.')
1410 p.append('')
1392
1411
1393 # FIXME: all uses of this function convert these to sets, do so before
1412 # FIXME: all uses of this function convert these to sets, do so before
1394 # returning.
1413 # returning.
@@ -40,7 +40,7 b' def _matchtrackedpath(path, matcher):'
40 if path.startswith('data/'):
40 if path.startswith('data/'):
41 return matcher(path[len('data/'):-len('.i')])
41 return matcher(path[len('data/'):-len('.i')])
42 elif path.startswith('meta/'):
42 elif path.startswith('meta/'):
43 return matcher.visitdir(path[len('meta/'):-len('/00manifest.i')] or '.')
43 return matcher.visitdir(path[len('meta/'):-len('/00manifest.i')])
44
44
45 raise error.ProgrammingError("cannot decode path %s" % path)
45 raise error.ProgrammingError("cannot decode path %s" % path)
46
46
@@ -29,3 +29,6 b''
29 == Internal API Changes ==
29 == Internal API Changes ==
30
30
31 * Matchers are no longer iterable. Use `match.files()` instead.
31 * Matchers are no longer iterable. Use `match.files()` instead.
32
33 * `match.visitdir()` and `match.visitchildrenset()` now expect the
34 empty string instead of '.' to indicate the root directory.
@@ -13,36 +13,36 b' class BaseMatcherTests(unittest.TestCase'
13
13
14 def testVisitdir(self):
14 def testVisitdir(self):
15 m = matchmod.basematcher()
15 m = matchmod.basematcher()
16 self.assertTrue(m.visitdir(b'.'))
16 self.assertTrue(m.visitdir(b''))
17 self.assertTrue(m.visitdir(b'dir'))
17 self.assertTrue(m.visitdir(b'dir'))
18
18
19 def testVisitchildrenset(self):
19 def testVisitchildrenset(self):
20 m = matchmod.basematcher()
20 m = matchmod.basematcher()
21 self.assertEqual(m.visitchildrenset(b'.'), b'this')
21 self.assertEqual(m.visitchildrenset(b''), b'this')
22 self.assertEqual(m.visitchildrenset(b'dir'), b'this')
22 self.assertEqual(m.visitchildrenset(b'dir'), b'this')
23
23
24 class AlwaysMatcherTests(unittest.TestCase):
24 class AlwaysMatcherTests(unittest.TestCase):
25
25
26 def testVisitdir(self):
26 def testVisitdir(self):
27 m = matchmod.alwaysmatcher()
27 m = matchmod.alwaysmatcher()
28 self.assertEqual(m.visitdir(b'.'), b'all')
28 self.assertEqual(m.visitdir(b''), b'all')
29 self.assertEqual(m.visitdir(b'dir'), b'all')
29 self.assertEqual(m.visitdir(b'dir'), b'all')
30
30
31 def testVisitchildrenset(self):
31 def testVisitchildrenset(self):
32 m = matchmod.alwaysmatcher()
32 m = matchmod.alwaysmatcher()
33 self.assertEqual(m.visitchildrenset(b'.'), b'all')
33 self.assertEqual(m.visitchildrenset(b''), b'all')
34 self.assertEqual(m.visitchildrenset(b'dir'), b'all')
34 self.assertEqual(m.visitchildrenset(b'dir'), b'all')
35
35
36 class NeverMatcherTests(unittest.TestCase):
36 class NeverMatcherTests(unittest.TestCase):
37
37
38 def testVisitdir(self):
38 def testVisitdir(self):
39 m = matchmod.nevermatcher()
39 m = matchmod.nevermatcher()
40 self.assertFalse(m.visitdir(b'.'))
40 self.assertFalse(m.visitdir(b''))
41 self.assertFalse(m.visitdir(b'dir'))
41 self.assertFalse(m.visitdir(b'dir'))
42
42
43 def testVisitchildrenset(self):
43 def testVisitchildrenset(self):
44 m = matchmod.nevermatcher()
44 m = matchmod.nevermatcher()
45 self.assertEqual(m.visitchildrenset(b'.'), set())
45 self.assertEqual(m.visitchildrenset(b''), set())
46 self.assertEqual(m.visitchildrenset(b'dir'), set())
46 self.assertEqual(m.visitchildrenset(b'dir'), set())
47
47
48 class PredicateMatcherTests(unittest.TestCase):
48 class PredicateMatcherTests(unittest.TestCase):
@@ -51,12 +51,12 b' class PredicateMatcherTests(unittest.Tes'
51
51
52 def testVisitdir(self):
52 def testVisitdir(self):
53 m = matchmod.predicatematcher(lambda *a: False)
53 m = matchmod.predicatematcher(lambda *a: False)
54 self.assertTrue(m.visitdir(b'.'))
54 self.assertTrue(m.visitdir(b''))
55 self.assertTrue(m.visitdir(b'dir'))
55 self.assertTrue(m.visitdir(b'dir'))
56
56
57 def testVisitchildrenset(self):
57 def testVisitchildrenset(self):
58 m = matchmod.predicatematcher(lambda *a: False)
58 m = matchmod.predicatematcher(lambda *a: False)
59 self.assertEqual(m.visitchildrenset(b'.'), b'this')
59 self.assertEqual(m.visitchildrenset(b''), b'this')
60 self.assertEqual(m.visitchildrenset(b'dir'), b'this')
60 self.assertEqual(m.visitchildrenset(b'dir'), b'this')
61
61
62 class PatternMatcherTests(unittest.TestCase):
62 class PatternMatcherTests(unittest.TestCase):
@@ -64,7 +64,7 b' class PatternMatcherTests(unittest.TestC'
64 def testVisitdirPrefix(self):
64 def testVisitdirPrefix(self):
65 m = matchmod.match(b'x', b'', patterns=[b'path:dir/subdir'])
65 m = matchmod.match(b'x', b'', patterns=[b'path:dir/subdir'])
66 assert isinstance(m, matchmod.patternmatcher)
66 assert isinstance(m, matchmod.patternmatcher)
67 self.assertTrue(m.visitdir(b'.'))
67 self.assertTrue(m.visitdir(b''))
68 self.assertTrue(m.visitdir(b'dir'))
68 self.assertTrue(m.visitdir(b'dir'))
69 self.assertEqual(m.visitdir(b'dir/subdir'), b'all')
69 self.assertEqual(m.visitdir(b'dir/subdir'), b'all')
70 # OPT: This should probably be 'all' if its parent is?
70 # OPT: This should probably be 'all' if its parent is?
@@ -74,7 +74,7 b' class PatternMatcherTests(unittest.TestC'
74 def testVisitchildrensetPrefix(self):
74 def testVisitchildrensetPrefix(self):
75 m = matchmod.match(b'x', b'', patterns=[b'path:dir/subdir'])
75 m = matchmod.match(b'x', b'', patterns=[b'path:dir/subdir'])
76 assert isinstance(m, matchmod.patternmatcher)
76 assert isinstance(m, matchmod.patternmatcher)
77 self.assertEqual(m.visitchildrenset(b'.'), b'this')
77 self.assertEqual(m.visitchildrenset(b''), b'this')
78 self.assertEqual(m.visitchildrenset(b'dir'), b'this')
78 self.assertEqual(m.visitchildrenset(b'dir'), b'this')
79 self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'all')
79 self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'all')
80 # OPT: This should probably be 'all' if its parent is?
80 # OPT: This should probably be 'all' if its parent is?
@@ -84,7 +84,7 b' class PatternMatcherTests(unittest.TestC'
84 def testVisitdirRootfilesin(self):
84 def testVisitdirRootfilesin(self):
85 m = matchmod.match(b'x', b'', patterns=[b'rootfilesin:dir/subdir'])
85 m = matchmod.match(b'x', b'', patterns=[b'rootfilesin:dir/subdir'])
86 assert isinstance(m, matchmod.patternmatcher)
86 assert isinstance(m, matchmod.patternmatcher)
87 self.assertTrue(m.visitdir(b'.'))
87 self.assertTrue(m.visitdir(b''))
88 self.assertFalse(m.visitdir(b'dir/subdir/x'))
88 self.assertFalse(m.visitdir(b'dir/subdir/x'))
89 self.assertFalse(m.visitdir(b'folder'))
89 self.assertFalse(m.visitdir(b'folder'))
90 # FIXME: These should probably be True.
90 # FIXME: These should probably be True.
@@ -94,7 +94,7 b' class PatternMatcherTests(unittest.TestC'
94 def testVisitchildrensetRootfilesin(self):
94 def testVisitchildrensetRootfilesin(self):
95 m = matchmod.match(b'x', b'', patterns=[b'rootfilesin:dir/subdir'])
95 m = matchmod.match(b'x', b'', patterns=[b'rootfilesin:dir/subdir'])
96 assert isinstance(m, matchmod.patternmatcher)
96 assert isinstance(m, matchmod.patternmatcher)
97 self.assertEqual(m.visitchildrenset(b'.'), b'this')
97 self.assertEqual(m.visitchildrenset(b''), b'this')
98 self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), set())
98 self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), set())
99 self.assertEqual(m.visitchildrenset(b'folder'), set())
99 self.assertEqual(m.visitchildrenset(b'folder'), set())
100 # FIXME: These should probably be {'subdir'} and 'this', respectively,
100 # FIXME: These should probably be {'subdir'} and 'this', respectively,
@@ -105,7 +105,7 b' class PatternMatcherTests(unittest.TestC'
105 def testVisitdirGlob(self):
105 def testVisitdirGlob(self):
106 m = matchmod.match(b'x', b'', patterns=[b'glob:dir/z*'])
106 m = matchmod.match(b'x', b'', patterns=[b'glob:dir/z*'])
107 assert isinstance(m, matchmod.patternmatcher)
107 assert isinstance(m, matchmod.patternmatcher)
108 self.assertTrue(m.visitdir(b'.'))
108 self.assertTrue(m.visitdir(b''))
109 self.assertTrue(m.visitdir(b'dir'))
109 self.assertTrue(m.visitdir(b'dir'))
110 self.assertFalse(m.visitdir(b'folder'))
110 self.assertFalse(m.visitdir(b'folder'))
111 # OPT: these should probably be False.
111 # OPT: these should probably be False.
@@ -115,7 +115,7 b' class PatternMatcherTests(unittest.TestC'
115 def testVisitchildrensetGlob(self):
115 def testVisitchildrensetGlob(self):
116 m = matchmod.match(b'x', b'', patterns=[b'glob:dir/z*'])
116 m = matchmod.match(b'x', b'', patterns=[b'glob:dir/z*'])
117 assert isinstance(m, matchmod.patternmatcher)
117 assert isinstance(m, matchmod.patternmatcher)
118 self.assertEqual(m.visitchildrenset(b'.'), b'this')
118 self.assertEqual(m.visitchildrenset(b''), b'this')
119 self.assertEqual(m.visitchildrenset(b'folder'), set())
119 self.assertEqual(m.visitchildrenset(b'folder'), set())
120 self.assertEqual(m.visitchildrenset(b'dir'), b'this')
120 self.assertEqual(m.visitchildrenset(b'dir'), b'this')
121 # OPT: these should probably be set().
121 # OPT: these should probably be set().
@@ -127,7 +127,7 b' class IncludeMatcherTests(unittest.TestC'
127 def testVisitdirPrefix(self):
127 def testVisitdirPrefix(self):
128 m = matchmod.match(b'x', b'', include=[b'path:dir/subdir'])
128 m = matchmod.match(b'x', b'', include=[b'path:dir/subdir'])
129 assert isinstance(m, matchmod.includematcher)
129 assert isinstance(m, matchmod.includematcher)
130 self.assertTrue(m.visitdir(b'.'))
130 self.assertTrue(m.visitdir(b''))
131 self.assertTrue(m.visitdir(b'dir'))
131 self.assertTrue(m.visitdir(b'dir'))
132 self.assertEqual(m.visitdir(b'dir/subdir'), b'all')
132 self.assertEqual(m.visitdir(b'dir/subdir'), b'all')
133 # OPT: This should probably be 'all' if its parent is?
133 # OPT: This should probably be 'all' if its parent is?
@@ -137,7 +137,7 b' class IncludeMatcherTests(unittest.TestC'
137 def testVisitchildrensetPrefix(self):
137 def testVisitchildrensetPrefix(self):
138 m = matchmod.match(b'x', b'', include=[b'path:dir/subdir'])
138 m = matchmod.match(b'x', b'', include=[b'path:dir/subdir'])
139 assert isinstance(m, matchmod.includematcher)
139 assert isinstance(m, matchmod.includematcher)
140 self.assertEqual(m.visitchildrenset(b'.'), {b'dir'})
140 self.assertEqual(m.visitchildrenset(b''), {b'dir'})
141 self.assertEqual(m.visitchildrenset(b'dir'), {b'subdir'})
141 self.assertEqual(m.visitchildrenset(b'dir'), {b'subdir'})
142 self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'all')
142 self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'all')
143 # OPT: This should probably be 'all' if its parent is?
143 # OPT: This should probably be 'all' if its parent is?
@@ -147,7 +147,7 b' class IncludeMatcherTests(unittest.TestC'
147 def testVisitdirRootfilesin(self):
147 def testVisitdirRootfilesin(self):
148 m = matchmod.match(b'x', b'', include=[b'rootfilesin:dir/subdir'])
148 m = matchmod.match(b'x', b'', include=[b'rootfilesin:dir/subdir'])
149 assert isinstance(m, matchmod.includematcher)
149 assert isinstance(m, matchmod.includematcher)
150 self.assertTrue(m.visitdir(b'.'))
150 self.assertTrue(m.visitdir(b''))
151 self.assertTrue(m.visitdir(b'dir'))
151 self.assertTrue(m.visitdir(b'dir'))
152 self.assertTrue(m.visitdir(b'dir/subdir'))
152 self.assertTrue(m.visitdir(b'dir/subdir'))
153 self.assertFalse(m.visitdir(b'dir/subdir/x'))
153 self.assertFalse(m.visitdir(b'dir/subdir/x'))
@@ -156,7 +156,7 b' class IncludeMatcherTests(unittest.TestC'
156 def testVisitchildrensetRootfilesin(self):
156 def testVisitchildrensetRootfilesin(self):
157 m = matchmod.match(b'x', b'', include=[b'rootfilesin:dir/subdir'])
157 m = matchmod.match(b'x', b'', include=[b'rootfilesin:dir/subdir'])
158 assert isinstance(m, matchmod.includematcher)
158 assert isinstance(m, matchmod.includematcher)
159 self.assertEqual(m.visitchildrenset(b'.'), {b'dir'})
159 self.assertEqual(m.visitchildrenset(b''), {b'dir'})
160 self.assertEqual(m.visitchildrenset(b'dir'), {b'subdir'})
160 self.assertEqual(m.visitchildrenset(b'dir'), {b'subdir'})
161 self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'this')
161 self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'this')
162 self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), set())
162 self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), set())
@@ -165,7 +165,7 b' class IncludeMatcherTests(unittest.TestC'
165 def testVisitdirGlob(self):
165 def testVisitdirGlob(self):
166 m = matchmod.match(b'x', b'', include=[b'glob:dir/z*'])
166 m = matchmod.match(b'x', b'', include=[b'glob:dir/z*'])
167 assert isinstance(m, matchmod.includematcher)
167 assert isinstance(m, matchmod.includematcher)
168 self.assertTrue(m.visitdir(b'.'))
168 self.assertTrue(m.visitdir(b''))
169 self.assertTrue(m.visitdir(b'dir'))
169 self.assertTrue(m.visitdir(b'dir'))
170 self.assertFalse(m.visitdir(b'folder'))
170 self.assertFalse(m.visitdir(b'folder'))
171 # OPT: these should probably be False.
171 # OPT: these should probably be False.
@@ -175,7 +175,7 b' class IncludeMatcherTests(unittest.TestC'
175 def testVisitchildrensetGlob(self):
175 def testVisitchildrensetGlob(self):
176 m = matchmod.match(b'x', b'', include=[b'glob:dir/z*'])
176 m = matchmod.match(b'x', b'', include=[b'glob:dir/z*'])
177 assert isinstance(m, matchmod.includematcher)
177 assert isinstance(m, matchmod.includematcher)
178 self.assertEqual(m.visitchildrenset(b'.'), {b'dir'})
178 self.assertEqual(m.visitchildrenset(b''), {b'dir'})
179 self.assertEqual(m.visitchildrenset(b'folder'), set())
179 self.assertEqual(m.visitchildrenset(b'folder'), set())
180 self.assertEqual(m.visitchildrenset(b'dir'), b'this')
180 self.assertEqual(m.visitchildrenset(b'dir'), b'this')
181 # OPT: these should probably be set().
181 # OPT: these should probably be set().
@@ -187,7 +187,7 b' class ExactMatcherTests(unittest.TestCas'
187 def testVisitdir(self):
187 def testVisitdir(self):
188 m = matchmod.exact(files=[b'dir/subdir/foo.txt'])
188 m = matchmod.exact(files=[b'dir/subdir/foo.txt'])
189 assert isinstance(m, matchmod.exactmatcher)
189 assert isinstance(m, matchmod.exactmatcher)
190 self.assertTrue(m.visitdir(b'.'))
190 self.assertTrue(m.visitdir(b''))
191 self.assertTrue(m.visitdir(b'dir'))
191 self.assertTrue(m.visitdir(b'dir'))
192 self.assertTrue(m.visitdir(b'dir/subdir'))
192 self.assertTrue(m.visitdir(b'dir/subdir'))
193 self.assertFalse(m.visitdir(b'dir/subdir/foo.txt'))
193 self.assertFalse(m.visitdir(b'dir/subdir/foo.txt'))
@@ -198,7 +198,7 b' class ExactMatcherTests(unittest.TestCas'
198 def testVisitchildrenset(self):
198 def testVisitchildrenset(self):
199 m = matchmod.exact(files=[b'dir/subdir/foo.txt'])
199 m = matchmod.exact(files=[b'dir/subdir/foo.txt'])
200 assert isinstance(m, matchmod.exactmatcher)
200 assert isinstance(m, matchmod.exactmatcher)
201 self.assertEqual(m.visitchildrenset(b'.'), {b'dir'})
201 self.assertEqual(m.visitchildrenset(b''), {b'dir'})
202 self.assertEqual(m.visitchildrenset(b'dir'), {b'subdir'})
202 self.assertEqual(m.visitchildrenset(b'dir'), {b'subdir'})
203 self.assertEqual(m.visitchildrenset(b'dir/subdir'), {b'foo.txt'})
203 self.assertEqual(m.visitchildrenset(b'dir/subdir'), {b'foo.txt'})
204 self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), set())
204 self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), set())
@@ -212,7 +212,7 b' class ExactMatcherTests(unittest.TestCas'
212 # no file in a/b/c
212 # no file in a/b/c
213 b'a/b/c/d/file4.txt'])
213 b'a/b/c/d/file4.txt'])
214 assert isinstance(m, matchmod.exactmatcher)
214 assert isinstance(m, matchmod.exactmatcher)
215 self.assertEqual(m.visitchildrenset(b'.'), {b'a', b'rootfile.txt'})
215 self.assertEqual(m.visitchildrenset(b''), {b'a', b'rootfile.txt'})
216 self.assertEqual(m.visitchildrenset(b'a'), {b'b', b'file1.txt'})
216 self.assertEqual(m.visitchildrenset(b'a'), {b'b', b'file1.txt'})
217 self.assertEqual(m.visitchildrenset(b'a/b'), {b'c', b'file2.txt'})
217 self.assertEqual(m.visitchildrenset(b'a/b'), {b'c', b'file2.txt'})
218 self.assertEqual(m.visitchildrenset(b'a/b/c'), {b'd'})
218 self.assertEqual(m.visitchildrenset(b'a/b/c'), {b'd'})
@@ -227,7 +227,7 b' class DifferenceMatcherTests(unittest.Te'
227 m2 = matchmod.alwaysmatcher()
227 m2 = matchmod.alwaysmatcher()
228 dm = matchmod.differencematcher(m1, m2)
228 dm = matchmod.differencematcher(m1, m2)
229 # dm should be equivalent to a nevermatcher.
229 # dm should be equivalent to a nevermatcher.
230 self.assertFalse(dm.visitdir(b'.'))
230 self.assertFalse(dm.visitdir(b''))
231 self.assertFalse(dm.visitdir(b'dir'))
231 self.assertFalse(dm.visitdir(b'dir'))
232 self.assertFalse(dm.visitdir(b'dir/subdir'))
232 self.assertFalse(dm.visitdir(b'dir/subdir'))
233 self.assertFalse(dm.visitdir(b'dir/subdir/z'))
233 self.assertFalse(dm.visitdir(b'dir/subdir/z'))
@@ -240,7 +240,7 b' class DifferenceMatcherTests(unittest.Te'
240 m2 = matchmod.alwaysmatcher()
240 m2 = matchmod.alwaysmatcher()
241 dm = matchmod.differencematcher(m1, m2)
241 dm = matchmod.differencematcher(m1, m2)
242 # dm should be equivalent to a nevermatcher.
242 # dm should be equivalent to a nevermatcher.
243 self.assertEqual(dm.visitchildrenset(b'.'), set())
243 self.assertEqual(dm.visitchildrenset(b''), set())
244 self.assertEqual(dm.visitchildrenset(b'dir'), set())
244 self.assertEqual(dm.visitchildrenset(b'dir'), set())
245 self.assertEqual(dm.visitchildrenset(b'dir/subdir'), set())
245 self.assertEqual(dm.visitchildrenset(b'dir/subdir'), set())
246 self.assertEqual(dm.visitchildrenset(b'dir/subdir/z'), set())
246 self.assertEqual(dm.visitchildrenset(b'dir/subdir/z'), set())
@@ -258,7 +258,7 b' class DifferenceMatcherTests(unittest.Te'
258 # assertTrue does NOT verify that it's a bool, just that it's truthy.
258 # assertTrue does NOT verify that it's a bool, just that it's truthy.
259 # While we may want to eventually make these return 'all', they should
259 # While we may want to eventually make these return 'all', they should
260 # not currently do so.
260 # not currently do so.
261 self.assertEqual(dm.visitdir(b'.'), b'all')
261 self.assertEqual(dm.visitdir(b''), b'all')
262 self.assertEqual(dm.visitdir(b'dir'), b'all')
262 self.assertEqual(dm.visitdir(b'dir'), b'all')
263 self.assertEqual(dm.visitdir(b'dir/subdir'), b'all')
263 self.assertEqual(dm.visitdir(b'dir/subdir'), b'all')
264 self.assertEqual(dm.visitdir(b'dir/subdir/z'), b'all')
264 self.assertEqual(dm.visitdir(b'dir/subdir/z'), b'all')
@@ -271,7 +271,7 b' class DifferenceMatcherTests(unittest.Te'
271 m2 = matchmod.nevermatcher()
271 m2 = matchmod.nevermatcher()
272 dm = matchmod.differencematcher(m1, m2)
272 dm = matchmod.differencematcher(m1, m2)
273 # dm should be equivalent to a alwaysmatcher.
273 # dm should be equivalent to a alwaysmatcher.
274 self.assertEqual(dm.visitchildrenset(b'.'), b'all')
274 self.assertEqual(dm.visitchildrenset(b''), b'all')
275 self.assertEqual(dm.visitchildrenset(b'dir'), b'all')
275 self.assertEqual(dm.visitchildrenset(b'dir'), b'all')
276 self.assertEqual(dm.visitchildrenset(b'dir/subdir'), b'all')
276 self.assertEqual(dm.visitchildrenset(b'dir/subdir'), b'all')
277 self.assertEqual(dm.visitchildrenset(b'dir/subdir/z'), b'all')
277 self.assertEqual(dm.visitchildrenset(b'dir/subdir/z'), b'all')
@@ -283,7 +283,7 b' class DifferenceMatcherTests(unittest.Te'
283 m1 = matchmod.alwaysmatcher()
283 m1 = matchmod.alwaysmatcher()
284 m2 = matchmod.match(b'', b'', patterns=[b'path:dir/subdir'])
284 m2 = matchmod.match(b'', b'', patterns=[b'path:dir/subdir'])
285 dm = matchmod.differencematcher(m1, m2)
285 dm = matchmod.differencematcher(m1, m2)
286 self.assertEqual(dm.visitdir(b'.'), True)
286 self.assertEqual(dm.visitdir(b''), True)
287 self.assertEqual(dm.visitdir(b'dir'), True)
287 self.assertEqual(dm.visitdir(b'dir'), True)
288 self.assertFalse(dm.visitdir(b'dir/subdir'))
288 self.assertFalse(dm.visitdir(b'dir/subdir'))
289 # OPT: We should probably return False for these; we don't because
289 # OPT: We should probably return False for these; we don't because
@@ -298,7 +298,7 b' class DifferenceMatcherTests(unittest.Te'
298 m1 = matchmod.alwaysmatcher()
298 m1 = matchmod.alwaysmatcher()
299 m2 = matchmod.match(b'', b'', patterns=[b'path:dir/subdir'])
299 m2 = matchmod.match(b'', b'', patterns=[b'path:dir/subdir'])
300 dm = matchmod.differencematcher(m1, m2)
300 dm = matchmod.differencematcher(m1, m2)
301 self.assertEqual(dm.visitchildrenset(b'.'), b'this')
301 self.assertEqual(dm.visitchildrenset(b''), b'this')
302 self.assertEqual(dm.visitchildrenset(b'dir'), b'this')
302 self.assertEqual(dm.visitchildrenset(b'dir'), b'this')
303 self.assertEqual(dm.visitchildrenset(b'dir/subdir'), set())
303 self.assertEqual(dm.visitchildrenset(b'dir/subdir'), set())
304 self.assertEqual(dm.visitchildrenset(b'dir/foo'), b'all')
304 self.assertEqual(dm.visitchildrenset(b'dir/foo'), b'all')
@@ -315,7 +315,7 b' class DifferenceMatcherTests(unittest.Te'
315 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
315 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
316 m2 = matchmod.match(b'', b'', include=[b'rootfilesin:dir'])
316 m2 = matchmod.match(b'', b'', include=[b'rootfilesin:dir'])
317 dm = matchmod.differencematcher(m1, m2)
317 dm = matchmod.differencematcher(m1, m2)
318 self.assertEqual(dm.visitdir(b'.'), True)
318 self.assertEqual(dm.visitdir(b''), True)
319 self.assertEqual(dm.visitdir(b'dir'), True)
319 self.assertEqual(dm.visitdir(b'dir'), True)
320 self.assertEqual(dm.visitdir(b'dir/subdir'), b'all')
320 self.assertEqual(dm.visitdir(b'dir/subdir'), b'all')
321 self.assertFalse(dm.visitdir(b'dir/foo'))
321 self.assertFalse(dm.visitdir(b'dir/foo'))
@@ -330,7 +330,7 b' class DifferenceMatcherTests(unittest.Te'
330 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
330 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
331 m2 = matchmod.match(b'', b'', include=[b'rootfilesin:dir'])
331 m2 = matchmod.match(b'', b'', include=[b'rootfilesin:dir'])
332 dm = matchmod.differencematcher(m1, m2)
332 dm = matchmod.differencematcher(m1, m2)
333 self.assertEqual(dm.visitchildrenset(b'.'), {b'dir'})
333 self.assertEqual(dm.visitchildrenset(b''), {b'dir'})
334 self.assertEqual(dm.visitchildrenset(b'dir'), {b'subdir'})
334 self.assertEqual(dm.visitchildrenset(b'dir'), {b'subdir'})
335 self.assertEqual(dm.visitchildrenset(b'dir/subdir'), b'all')
335 self.assertEqual(dm.visitchildrenset(b'dir/subdir'), b'all')
336 self.assertEqual(dm.visitchildrenset(b'dir/foo'), set())
336 self.assertEqual(dm.visitchildrenset(b'dir/foo'), set())
@@ -348,7 +348,7 b' class IntersectionMatcherTests(unittest.'
348 m2 = matchmod.alwaysmatcher()
348 m2 = matchmod.alwaysmatcher()
349 im = matchmod.intersectmatchers(m1, m2)
349 im = matchmod.intersectmatchers(m1, m2)
350 # im should be equivalent to a alwaysmatcher.
350 # im should be equivalent to a alwaysmatcher.
351 self.assertEqual(im.visitdir(b'.'), b'all')
351 self.assertEqual(im.visitdir(b''), b'all')
352 self.assertEqual(im.visitdir(b'dir'), b'all')
352 self.assertEqual(im.visitdir(b'dir'), b'all')
353 self.assertEqual(im.visitdir(b'dir/subdir'), b'all')
353 self.assertEqual(im.visitdir(b'dir/subdir'), b'all')
354 self.assertEqual(im.visitdir(b'dir/subdir/z'), b'all')
354 self.assertEqual(im.visitdir(b'dir/subdir/z'), b'all')
@@ -361,7 +361,7 b' class IntersectionMatcherTests(unittest.'
361 m2 = matchmod.alwaysmatcher()
361 m2 = matchmod.alwaysmatcher()
362 im = matchmod.intersectmatchers(m1, m2)
362 im = matchmod.intersectmatchers(m1, m2)
363 # im should be equivalent to a alwaysmatcher.
363 # im should be equivalent to a alwaysmatcher.
364 self.assertEqual(im.visitchildrenset(b'.'), b'all')
364 self.assertEqual(im.visitchildrenset(b''), b'all')
365 self.assertEqual(im.visitchildrenset(b'dir'), b'all')
365 self.assertEqual(im.visitchildrenset(b'dir'), b'all')
366 self.assertEqual(im.visitchildrenset(b'dir/subdir'), b'all')
366 self.assertEqual(im.visitchildrenset(b'dir/subdir'), b'all')
367 self.assertEqual(im.visitchildrenset(b'dir/subdir/z'), b'all')
367 self.assertEqual(im.visitchildrenset(b'dir/subdir/z'), b'all')
@@ -374,7 +374,7 b' class IntersectionMatcherTests(unittest.'
374 m2 = matchmod.nevermatcher()
374 m2 = matchmod.nevermatcher()
375 im = matchmod.intersectmatchers(m1, m2)
375 im = matchmod.intersectmatchers(m1, m2)
376 # im should be equivalent to a nevermatcher.
376 # im should be equivalent to a nevermatcher.
377 self.assertFalse(im.visitdir(b'.'))
377 self.assertFalse(im.visitdir(b''))
378 self.assertFalse(im.visitdir(b'dir'))
378 self.assertFalse(im.visitdir(b'dir'))
379 self.assertFalse(im.visitdir(b'dir/subdir'))
379 self.assertFalse(im.visitdir(b'dir/subdir'))
380 self.assertFalse(im.visitdir(b'dir/subdir/z'))
380 self.assertFalse(im.visitdir(b'dir/subdir/z'))
@@ -387,7 +387,7 b' class IntersectionMatcherTests(unittest.'
387 m2 = matchmod.nevermatcher()
387 m2 = matchmod.nevermatcher()
388 im = matchmod.intersectmatchers(m1, m2)
388 im = matchmod.intersectmatchers(m1, m2)
389 # im should be equivalent to a nevermqtcher.
389 # im should be equivalent to a nevermqtcher.
390 self.assertEqual(im.visitchildrenset(b'.'), set())
390 self.assertEqual(im.visitchildrenset(b''), set())
391 self.assertEqual(im.visitchildrenset(b'dir'), set())
391 self.assertEqual(im.visitchildrenset(b'dir'), set())
392 self.assertEqual(im.visitchildrenset(b'dir/subdir'), set())
392 self.assertEqual(im.visitchildrenset(b'dir/subdir'), set())
393 self.assertEqual(im.visitchildrenset(b'dir/subdir/z'), set())
393 self.assertEqual(im.visitchildrenset(b'dir/subdir/z'), set())
@@ -399,7 +399,7 b' class IntersectionMatcherTests(unittest.'
399 m1 = matchmod.alwaysmatcher()
399 m1 = matchmod.alwaysmatcher()
400 m2 = matchmod.match(b'', b'', patterns=[b'path:dir/subdir'])
400 m2 = matchmod.match(b'', b'', patterns=[b'path:dir/subdir'])
401 im = matchmod.intersectmatchers(m1, m2)
401 im = matchmod.intersectmatchers(m1, m2)
402 self.assertEqual(im.visitdir(b'.'), True)
402 self.assertEqual(im.visitdir(b''), True)
403 self.assertEqual(im.visitdir(b'dir'), True)
403 self.assertEqual(im.visitdir(b'dir'), True)
404 self.assertEqual(im.visitdir(b'dir/subdir'), b'all')
404 self.assertEqual(im.visitdir(b'dir/subdir'), b'all')
405 self.assertFalse(im.visitdir(b'dir/foo'))
405 self.assertFalse(im.visitdir(b'dir/foo'))
@@ -414,7 +414,7 b' class IntersectionMatcherTests(unittest.'
414 m1 = matchmod.alwaysmatcher()
414 m1 = matchmod.alwaysmatcher()
415 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
415 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
416 im = matchmod.intersectmatchers(m1, m2)
416 im = matchmod.intersectmatchers(m1, m2)
417 self.assertEqual(im.visitchildrenset(b'.'), {b'dir'})
417 self.assertEqual(im.visitchildrenset(b''), {b'dir'})
418 self.assertEqual(im.visitchildrenset(b'dir'), {b'subdir'})
418 self.assertEqual(im.visitchildrenset(b'dir'), {b'subdir'})
419 self.assertEqual(im.visitchildrenset(b'dir/subdir'), b'all')
419 self.assertEqual(im.visitchildrenset(b'dir/subdir'), b'all')
420 self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
420 self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
@@ -429,7 +429,7 b' class IntersectionMatcherTests(unittest.'
429 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
429 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
430 m2 = matchmod.match(b'', b'', include=[b'rootfilesin:dir'])
430 m2 = matchmod.match(b'', b'', include=[b'rootfilesin:dir'])
431 im = matchmod.intersectmatchers(m1, m2)
431 im = matchmod.intersectmatchers(m1, m2)
432 self.assertEqual(im.visitdir(b'.'), True)
432 self.assertEqual(im.visitdir(b''), True)
433 self.assertEqual(im.visitdir(b'dir'), True)
433 self.assertEqual(im.visitdir(b'dir'), True)
434 self.assertFalse(im.visitdir(b'dir/subdir'))
434 self.assertFalse(im.visitdir(b'dir/subdir'))
435 self.assertFalse(im.visitdir(b'dir/foo'))
435 self.assertFalse(im.visitdir(b'dir/foo'))
@@ -441,7 +441,7 b' class IntersectionMatcherTests(unittest.'
441 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
441 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
442 m2 = matchmod.match(b'', b'', include=[b'rootfilesin:dir'])
442 m2 = matchmod.match(b'', b'', include=[b'rootfilesin:dir'])
443 im = matchmod.intersectmatchers(m1, m2)
443 im = matchmod.intersectmatchers(m1, m2)
444 self.assertEqual(im.visitchildrenset(b'.'), {b'dir'})
444 self.assertEqual(im.visitchildrenset(b''), {b'dir'})
445 self.assertEqual(im.visitchildrenset(b'dir'), b'this')
445 self.assertEqual(im.visitchildrenset(b'dir'), b'this')
446 self.assertEqual(im.visitchildrenset(b'dir/subdir'), set())
446 self.assertEqual(im.visitchildrenset(b'dir/subdir'), set())
447 self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
447 self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
@@ -456,7 +456,7 b' class IntersectionMatcherTests(unittest.'
456 m2 = matchmod.match(b'', b'', include=[b'path:folder'])
456 m2 = matchmod.match(b'', b'', include=[b'path:folder'])
457 im = matchmod.intersectmatchers(m1, m2)
457 im = matchmod.intersectmatchers(m1, m2)
458 # FIXME: is True correct here?
458 # FIXME: is True correct here?
459 self.assertEqual(im.visitdir(b'.'), True)
459 self.assertEqual(im.visitdir(b''), True)
460 self.assertFalse(im.visitdir(b'dir'))
460 self.assertFalse(im.visitdir(b'dir'))
461 self.assertFalse(im.visitdir(b'dir/subdir'))
461 self.assertFalse(im.visitdir(b'dir/subdir'))
462 self.assertFalse(im.visitdir(b'dir/foo'))
462 self.assertFalse(im.visitdir(b'dir/foo'))
@@ -469,7 +469,7 b' class IntersectionMatcherTests(unittest.'
469 m2 = matchmod.match(b'', b'', include=[b'path:folder'])
469 m2 = matchmod.match(b'', b'', include=[b'path:folder'])
470 im = matchmod.intersectmatchers(m1, m2)
470 im = matchmod.intersectmatchers(m1, m2)
471 # FIXME: is set() correct here?
471 # FIXME: is set() correct here?
472 self.assertEqual(im.visitchildrenset(b'.'), set())
472 self.assertEqual(im.visitchildrenset(b''), set())
473 self.assertEqual(im.visitchildrenset(b'dir'), set())
473 self.assertEqual(im.visitchildrenset(b'dir'), set())
474 self.assertEqual(im.visitchildrenset(b'dir/subdir'), set())
474 self.assertEqual(im.visitchildrenset(b'dir/subdir'), set())
475 self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
475 self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
@@ -483,7 +483,7 b' class IntersectionMatcherTests(unittest.'
483 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir/x'])
483 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir/x'])
484 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
484 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
485 im = matchmod.intersectmatchers(m1, m2)
485 im = matchmod.intersectmatchers(m1, m2)
486 self.assertEqual(im.visitdir(b'.'), True)
486 self.assertEqual(im.visitdir(b''), True)
487 self.assertEqual(im.visitdir(b'dir'), True)
487 self.assertEqual(im.visitdir(b'dir'), True)
488 self.assertEqual(im.visitdir(b'dir/subdir'), True)
488 self.assertEqual(im.visitdir(b'dir/subdir'), True)
489 self.assertFalse(im.visitdir(b'dir/foo'))
489 self.assertFalse(im.visitdir(b'dir/foo'))
@@ -496,7 +496,7 b' class IntersectionMatcherTests(unittest.'
496 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir/x'])
496 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir/x'])
497 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
497 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
498 im = matchmod.intersectmatchers(m1, m2)
498 im = matchmod.intersectmatchers(m1, m2)
499 self.assertEqual(im.visitchildrenset(b'.'), {b'dir'})
499 self.assertEqual(im.visitchildrenset(b''), {b'dir'})
500 self.assertEqual(im.visitchildrenset(b'dir'), {b'subdir'})
500 self.assertEqual(im.visitchildrenset(b'dir'), {b'subdir'})
501 self.assertEqual(im.visitchildrenset(b'dir/subdir'), {b'x'})
501 self.assertEqual(im.visitchildrenset(b'dir/subdir'), {b'x'})
502 self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
502 self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
@@ -512,7 +512,7 b' class IntersectionMatcherTests(unittest.'
512 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir/z'])
512 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir/z'])
513 im = matchmod.intersectmatchers(m1, m2)
513 im = matchmod.intersectmatchers(m1, m2)
514 # OPT: these next three could probably be False as well.
514 # OPT: these next three could probably be False as well.
515 self.assertEqual(im.visitdir(b'.'), True)
515 self.assertEqual(im.visitdir(b''), True)
516 self.assertEqual(im.visitdir(b'dir'), True)
516 self.assertEqual(im.visitdir(b'dir'), True)
517 self.assertEqual(im.visitdir(b'dir/subdir'), True)
517 self.assertEqual(im.visitdir(b'dir/subdir'), True)
518 self.assertFalse(im.visitdir(b'dir/foo'))
518 self.assertFalse(im.visitdir(b'dir/foo'))
@@ -525,7 +525,7 b' class IntersectionMatcherTests(unittest.'
525 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir/z'])
525 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir/z'])
526 im = matchmod.intersectmatchers(m1, m2)
526 im = matchmod.intersectmatchers(m1, m2)
527 # OPT: these next two could probably be set() as well.
527 # OPT: these next two could probably be set() as well.
528 self.assertEqual(im.visitchildrenset(b'.'), {b'dir'})
528 self.assertEqual(im.visitchildrenset(b''), {b'dir'})
529 self.assertEqual(im.visitchildrenset(b'dir'), {b'subdir'})
529 self.assertEqual(im.visitchildrenset(b'dir'), {b'subdir'})
530 self.assertEqual(im.visitchildrenset(b'dir/subdir'), set())
530 self.assertEqual(im.visitchildrenset(b'dir/subdir'), set())
531 self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
531 self.assertEqual(im.visitchildrenset(b'dir/foo'), set())
@@ -540,7 +540,7 b' class UnionMatcherTests(unittest.TestCas'
540 m2 = matchmod.alwaysmatcher()
540 m2 = matchmod.alwaysmatcher()
541 um = matchmod.unionmatcher([m1, m2])
541 um = matchmod.unionmatcher([m1, m2])
542 # um should be equivalent to a alwaysmatcher.
542 # um should be equivalent to a alwaysmatcher.
543 self.assertEqual(um.visitdir(b'.'), b'all')
543 self.assertEqual(um.visitdir(b''), b'all')
544 self.assertEqual(um.visitdir(b'dir'), b'all')
544 self.assertEqual(um.visitdir(b'dir'), b'all')
545 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
545 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
546 self.assertEqual(um.visitdir(b'dir/subdir/z'), b'all')
546 self.assertEqual(um.visitdir(b'dir/subdir/z'), b'all')
@@ -553,7 +553,7 b' class UnionMatcherTests(unittest.TestCas'
553 m2 = matchmod.alwaysmatcher()
553 m2 = matchmod.alwaysmatcher()
554 um = matchmod.unionmatcher([m1, m2])
554 um = matchmod.unionmatcher([m1, m2])
555 # um should be equivalent to a alwaysmatcher.
555 # um should be equivalent to a alwaysmatcher.
556 self.assertEqual(um.visitchildrenset(b'.'), b'all')
556 self.assertEqual(um.visitchildrenset(b''), b'all')
557 self.assertEqual(um.visitchildrenset(b'dir'), b'all')
557 self.assertEqual(um.visitchildrenset(b'dir'), b'all')
558 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
558 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
559 self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'all')
559 self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'all')
@@ -566,7 +566,7 b' class UnionMatcherTests(unittest.TestCas'
566 m2 = matchmod.alwaysmatcher()
566 m2 = matchmod.alwaysmatcher()
567 um = matchmod.unionmatcher([m1, m2])
567 um = matchmod.unionmatcher([m1, m2])
568 # um should be equivalent to a alwaysmatcher.
568 # um should be equivalent to a alwaysmatcher.
569 self.assertEqual(um.visitdir(b'.'), b'all')
569 self.assertEqual(um.visitdir(b''), b'all')
570 self.assertEqual(um.visitdir(b'dir'), b'all')
570 self.assertEqual(um.visitdir(b'dir'), b'all')
571 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
571 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
572 self.assertEqual(um.visitdir(b'dir/subdir/z'), b'all')
572 self.assertEqual(um.visitdir(b'dir/subdir/z'), b'all')
@@ -579,7 +579,7 b' class UnionMatcherTests(unittest.TestCas'
579 m2 = matchmod.alwaysmatcher()
579 m2 = matchmod.alwaysmatcher()
580 um = matchmod.unionmatcher([m1, m2])
580 um = matchmod.unionmatcher([m1, m2])
581 # um should be equivalent to a alwaysmatcher.
581 # um should be equivalent to a alwaysmatcher.
582 self.assertEqual(um.visitchildrenset(b'.'), b'all')
582 self.assertEqual(um.visitchildrenset(b''), b'all')
583 self.assertEqual(um.visitchildrenset(b'dir'), b'all')
583 self.assertEqual(um.visitchildrenset(b'dir'), b'all')
584 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
584 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
585 self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'all')
585 self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'all')
@@ -592,7 +592,7 b' class UnionMatcherTests(unittest.TestCas'
592 m2 = matchmod.nevermatcher()
592 m2 = matchmod.nevermatcher()
593 um = matchmod.unionmatcher([m1, m2])
593 um = matchmod.unionmatcher([m1, m2])
594 # um should be equivalent to a alwaysmatcher.
594 # um should be equivalent to a alwaysmatcher.
595 self.assertEqual(um.visitdir(b'.'), b'all')
595 self.assertEqual(um.visitdir(b''), b'all')
596 self.assertEqual(um.visitdir(b'dir'), b'all')
596 self.assertEqual(um.visitdir(b'dir'), b'all')
597 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
597 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
598 self.assertEqual(um.visitdir(b'dir/subdir/z'), b'all')
598 self.assertEqual(um.visitdir(b'dir/subdir/z'), b'all')
@@ -605,7 +605,7 b' class UnionMatcherTests(unittest.TestCas'
605 m2 = matchmod.nevermatcher()
605 m2 = matchmod.nevermatcher()
606 um = matchmod.unionmatcher([m1, m2])
606 um = matchmod.unionmatcher([m1, m2])
607 # um should be equivalent to a alwaysmatcher.
607 # um should be equivalent to a alwaysmatcher.
608 self.assertEqual(um.visitchildrenset(b'.'), b'all')
608 self.assertEqual(um.visitchildrenset(b''), b'all')
609 self.assertEqual(um.visitchildrenset(b'dir'), b'all')
609 self.assertEqual(um.visitchildrenset(b'dir'), b'all')
610 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
610 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
611 self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'all')
611 self.assertEqual(um.visitchildrenset(b'dir/subdir/z'), b'all')
@@ -617,7 +617,7 b' class UnionMatcherTests(unittest.TestCas'
617 m1 = matchmod.alwaysmatcher()
617 m1 = matchmod.alwaysmatcher()
618 m2 = matchmod.match(b'', b'', patterns=[b'path:dir/subdir'])
618 m2 = matchmod.match(b'', b'', patterns=[b'path:dir/subdir'])
619 um = matchmod.unionmatcher([m1, m2])
619 um = matchmod.unionmatcher([m1, m2])
620 self.assertEqual(um.visitdir(b'.'), b'all')
620 self.assertEqual(um.visitdir(b''), b'all')
621 self.assertEqual(um.visitdir(b'dir'), b'all')
621 self.assertEqual(um.visitdir(b'dir'), b'all')
622 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
622 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
623 self.assertEqual(um.visitdir(b'dir/foo'), b'all')
623 self.assertEqual(um.visitdir(b'dir/foo'), b'all')
@@ -629,7 +629,7 b' class UnionMatcherTests(unittest.TestCas'
629 m1 = matchmod.alwaysmatcher()
629 m1 = matchmod.alwaysmatcher()
630 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
630 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
631 um = matchmod.unionmatcher([m1, m2])
631 um = matchmod.unionmatcher([m1, m2])
632 self.assertEqual(um.visitchildrenset(b'.'), b'all')
632 self.assertEqual(um.visitchildrenset(b''), b'all')
633 self.assertEqual(um.visitchildrenset(b'dir'), b'all')
633 self.assertEqual(um.visitchildrenset(b'dir'), b'all')
634 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
634 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
635 self.assertEqual(um.visitchildrenset(b'dir/foo'), b'all')
635 self.assertEqual(um.visitchildrenset(b'dir/foo'), b'all')
@@ -643,7 +643,7 b' class UnionMatcherTests(unittest.TestCas'
643 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
643 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
644 m2 = matchmod.match(b'', b'', include=[b'rootfilesin:dir'])
644 m2 = matchmod.match(b'', b'', include=[b'rootfilesin:dir'])
645 um = matchmod.unionmatcher([m1, m2])
645 um = matchmod.unionmatcher([m1, m2])
646 self.assertEqual(um.visitdir(b'.'), True)
646 self.assertEqual(um.visitdir(b''), True)
647 self.assertEqual(um.visitdir(b'dir'), True)
647 self.assertEqual(um.visitdir(b'dir'), True)
648 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
648 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
649 self.assertFalse(um.visitdir(b'dir/foo'))
649 self.assertFalse(um.visitdir(b'dir/foo'))
@@ -656,7 +656,7 b' class UnionMatcherTests(unittest.TestCas'
656 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
656 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
657 m2 = matchmod.match(b'', b'', include=[b'rootfilesin:dir'])
657 m2 = matchmod.match(b'', b'', include=[b'rootfilesin:dir'])
658 um = matchmod.unionmatcher([m1, m2])
658 um = matchmod.unionmatcher([m1, m2])
659 self.assertEqual(um.visitchildrenset(b'.'), {b'dir'})
659 self.assertEqual(um.visitchildrenset(b''), {b'dir'})
660 self.assertEqual(um.visitchildrenset(b'dir'), b'this')
660 self.assertEqual(um.visitchildrenset(b'dir'), b'this')
661 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
661 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
662 self.assertEqual(um.visitchildrenset(b'dir/foo'), set())
662 self.assertEqual(um.visitchildrenset(b'dir/foo'), set())
@@ -671,7 +671,7 b' class UnionMatcherTests(unittest.TestCas'
671 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
671 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
672 m2 = matchmod.match(b'', b'', include=[b'path:folder'])
672 m2 = matchmod.match(b'', b'', include=[b'path:folder'])
673 um = matchmod.unionmatcher([m1, m2])
673 um = matchmod.unionmatcher([m1, m2])
674 self.assertEqual(um.visitdir(b'.'), True)
674 self.assertEqual(um.visitdir(b''), True)
675 self.assertEqual(um.visitdir(b'dir'), True)
675 self.assertEqual(um.visitdir(b'dir'), True)
676 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
676 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
677 self.assertFalse(um.visitdir(b'dir/foo'))
677 self.assertFalse(um.visitdir(b'dir/foo'))
@@ -684,7 +684,7 b' class UnionMatcherTests(unittest.TestCas'
684 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
684 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
685 m2 = matchmod.match(b'', b'', include=[b'path:folder'])
685 m2 = matchmod.match(b'', b'', include=[b'path:folder'])
686 um = matchmod.unionmatcher([m1, m2])
686 um = matchmod.unionmatcher([m1, m2])
687 self.assertEqual(um.visitchildrenset(b'.'), {b'folder', b'dir'})
687 self.assertEqual(um.visitchildrenset(b''), {b'folder', b'dir'})
688 self.assertEqual(um.visitchildrenset(b'dir'), {b'subdir'})
688 self.assertEqual(um.visitchildrenset(b'dir'), {b'subdir'})
689 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
689 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
690 self.assertEqual(um.visitchildrenset(b'dir/foo'), set())
690 self.assertEqual(um.visitchildrenset(b'dir/foo'), set())
@@ -699,7 +699,7 b' class UnionMatcherTests(unittest.TestCas'
699 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir/x'])
699 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir/x'])
700 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
700 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
701 um = matchmod.unionmatcher([m1, m2])
701 um = matchmod.unionmatcher([m1, m2])
702 self.assertEqual(um.visitdir(b'.'), True)
702 self.assertEqual(um.visitdir(b''), True)
703 self.assertEqual(um.visitdir(b'dir'), True)
703 self.assertEqual(um.visitdir(b'dir'), True)
704 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
704 self.assertEqual(um.visitdir(b'dir/subdir'), b'all')
705 self.assertFalse(um.visitdir(b'dir/foo'))
705 self.assertFalse(um.visitdir(b'dir/foo'))
@@ -712,7 +712,7 b' class UnionMatcherTests(unittest.TestCas'
712 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir/x'])
712 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir/x'])
713 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
713 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
714 um = matchmod.unionmatcher([m1, m2])
714 um = matchmod.unionmatcher([m1, m2])
715 self.assertEqual(um.visitchildrenset(b'.'), {b'dir'})
715 self.assertEqual(um.visitchildrenset(b''), {b'dir'})
716 self.assertEqual(um.visitchildrenset(b'dir'), {b'subdir'})
716 self.assertEqual(um.visitchildrenset(b'dir'), {b'subdir'})
717 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
717 self.assertEqual(um.visitchildrenset(b'dir/subdir'), b'all')
718 self.assertEqual(um.visitchildrenset(b'dir/foo'), set())
718 self.assertEqual(um.visitchildrenset(b'dir/foo'), set())
@@ -728,7 +728,7 b' class UnionMatcherTests(unittest.TestCas'
728 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir/z'])
728 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir/z'])
729 um = matchmod.unionmatcher([m1, m2])
729 um = matchmod.unionmatcher([m1, m2])
730 # OPT: these next three could probably be False as well.
730 # OPT: these next three could probably be False as well.
731 self.assertEqual(um.visitdir(b'.'), True)
731 self.assertEqual(um.visitdir(b''), True)
732 self.assertEqual(um.visitdir(b'dir'), True)
732 self.assertEqual(um.visitdir(b'dir'), True)
733 self.assertEqual(um.visitdir(b'dir/subdir'), True)
733 self.assertEqual(um.visitdir(b'dir/subdir'), True)
734 self.assertFalse(um.visitdir(b'dir/foo'))
734 self.assertFalse(um.visitdir(b'dir/foo'))
@@ -740,7 +740,7 b' class UnionMatcherTests(unittest.TestCas'
740 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir/x'])
740 m1 = matchmod.match(b'', b'', include=[b'path:dir/subdir/x'])
741 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir/z'])
741 m2 = matchmod.match(b'', b'', include=[b'path:dir/subdir/z'])
742 um = matchmod.unionmatcher([m1, m2])
742 um = matchmod.unionmatcher([m1, m2])
743 self.assertEqual(um.visitchildrenset(b'.'), {b'dir'})
743 self.assertEqual(um.visitchildrenset(b''), {b'dir'})
744 self.assertEqual(um.visitchildrenset(b'dir'), {b'subdir'})
744 self.assertEqual(um.visitchildrenset(b'dir'), {b'subdir'})
745 self.assertEqual(um.visitchildrenset(b'dir/subdir'), {b'x', b'z'})
745 self.assertEqual(um.visitchildrenset(b'dir/subdir'), {b'x', b'z'})
746 self.assertEqual(um.visitchildrenset(b'dir/foo'), set())
746 self.assertEqual(um.visitchildrenset(b'dir/foo'), set())
@@ -754,7 +754,7 b' class SubdirMatcherTests(unittest.TestCa'
754 m = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
754 m = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
755 sm = matchmod.subdirmatcher(b'dir', m)
755 sm = matchmod.subdirmatcher(b'dir', m)
756
756
757 self.assertEqual(sm.visitdir(b'.'), True)
757 self.assertEqual(sm.visitdir(b''), True)
758 self.assertEqual(sm.visitdir(b'subdir'), b'all')
758 self.assertEqual(sm.visitdir(b'subdir'), b'all')
759 # OPT: These next two should probably be 'all' not True.
759 # OPT: These next two should probably be 'all' not True.
760 self.assertEqual(sm.visitdir(b'subdir/x'), True)
760 self.assertEqual(sm.visitdir(b'subdir/x'), True)
@@ -765,7 +765,7 b' class SubdirMatcherTests(unittest.TestCa'
765 m = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
765 m = matchmod.match(b'', b'', include=[b'path:dir/subdir'])
766 sm = matchmod.subdirmatcher(b'dir', m)
766 sm = matchmod.subdirmatcher(b'dir', m)
767
767
768 self.assertEqual(sm.visitchildrenset(b'.'), {b'subdir'})
768 self.assertEqual(sm.visitchildrenset(b''), {b'subdir'})
769 self.assertEqual(sm.visitchildrenset(b'subdir'), b'all')
769 self.assertEqual(sm.visitchildrenset(b'subdir'), b'all')
770 # OPT: These next two should probably be 'all' not 'this'.
770 # OPT: These next two should probably be 'all' not 'this'.
771 self.assertEqual(sm.visitchildrenset(b'subdir/x'), b'this')
771 self.assertEqual(sm.visitchildrenset(b'subdir/x'), b'this')
@@ -795,12 +795,12 b' class PrefixdirMatcherTests(unittest.Tes'
795 self.assertEqual(bool(pm(b'd/e/b.txt')), False)
795 self.assertEqual(bool(pm(b'd/e/b.txt')), False)
796 self.assertEqual(bool(pm(b'd/e/f/b.txt')), True)
796 self.assertEqual(bool(pm(b'd/e/f/b.txt')), True)
797
797
798 self.assertEqual(m.visitdir(b'.'), True)
798 self.assertEqual(m.visitdir(b''), True)
799 self.assertEqual(m.visitdir(b'e'), True)
799 self.assertEqual(m.visitdir(b'e'), True)
800 self.assertEqual(m.visitdir(b'e/f'), True)
800 self.assertEqual(m.visitdir(b'e/f'), True)
801 self.assertEqual(m.visitdir(b'e/f/g'), False)
801 self.assertEqual(m.visitdir(b'e/f/g'), False)
802
802
803 self.assertEqual(pm.visitdir(b'.'), True)
803 self.assertEqual(pm.visitdir(b''), True)
804 self.assertEqual(pm.visitdir(b'd'), True)
804 self.assertEqual(pm.visitdir(b'd'), True)
805 self.assertEqual(pm.visitdir(b'd/e'), True)
805 self.assertEqual(pm.visitdir(b'd/e'), True)
806 self.assertEqual(pm.visitdir(b'd/e/f'), True)
806 self.assertEqual(pm.visitdir(b'd/e/f'), True)
@@ -814,7 +814,7 b' class PrefixdirMatcherTests(unittest.Tes'
814 # OPT: visitchildrenset could possibly return {'e'} and {'f'} for these
814 # OPT: visitchildrenset could possibly return {'e'} and {'f'} for these
815 # next two, respectively; patternmatcher does not have this
815 # next two, respectively; patternmatcher does not have this
816 # optimization.
816 # optimization.
817 self.assertEqual(m.visitchildrenset(b'.'), b'this')
817 self.assertEqual(m.visitchildrenset(b''), b'this')
818 self.assertEqual(m.visitchildrenset(b'e'), b'this')
818 self.assertEqual(m.visitchildrenset(b'e'), b'this')
819 self.assertEqual(m.visitchildrenset(b'e/f'), b'this')
819 self.assertEqual(m.visitchildrenset(b'e/f'), b'this')
820 self.assertEqual(m.visitchildrenset(b'e/f/g'), set())
820 self.assertEqual(m.visitchildrenset(b'e/f/g'), set())
@@ -822,7 +822,7 b' class PrefixdirMatcherTests(unittest.Tes'
822 # OPT: visitchildrenset could possibly return {'d'}, {'e'}, and {'f'}
822 # OPT: visitchildrenset could possibly return {'d'}, {'e'}, and {'f'}
823 # for these next three, respectively; patternmatcher does not have this
823 # for these next three, respectively; patternmatcher does not have this
824 # optimization.
824 # optimization.
825 self.assertEqual(pm.visitchildrenset(b'.'), b'this')
825 self.assertEqual(pm.visitchildrenset(b''), b'this')
826 self.assertEqual(pm.visitchildrenset(b'd'), b'this')
826 self.assertEqual(pm.visitchildrenset(b'd'), b'this')
827 self.assertEqual(pm.visitchildrenset(b'd/e'), b'this')
827 self.assertEqual(pm.visitchildrenset(b'd/e'), b'this')
828 self.assertEqual(pm.visitchildrenset(b'd/e/f'), b'this')
828 self.assertEqual(pm.visitchildrenset(b'd/e/f'), b'this')
General Comments 0
You need to be logged in to leave comments. Login now