changeset 32533:369c2d5eeea3

match: remove support for exact matching from main matcher class Exact matching is now handled by the exactmatcher class. We can safely remove _files from the __repr__() implementation, because even though the field is set, the patternspat field is enough for the representation to be unambiguous (which was not the case when the matcher could handle exact matches).
author Martin von Zweigbergk <martinvonz@google.com>
date Thu, 18 May 2017 23:39:39 -0700
parents a3583852861a
children 7095dbc266e3
files mercurial/match.py tests/test-eolfilename.t tests/test-hgignore.t tests/test-walk.t
diffstat 4 files changed, 91 insertions(+), 100 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/match.py	Wed May 17 09:26:15 2017 -0700
+++ b/mercurial/match.py	Thu May 18 23:39:39 2017 -0700
@@ -146,17 +146,17 @@
         m = exactmatcher(root, cwd, patterns, badfn)
     else:
         m = matcher(root, cwd, normalize, patterns, include=None,
-                    default=default, exact=exact, auditor=auditor, ctx=ctx,
+                    default=default, auditor=auditor, ctx=ctx,
                     listsubrepos=listsubrepos, warn=warn, badfn=badfn)
     if include:
         im = matcher(root, cwd, normalize, [], include=include, default=default,
-                     exact=False, auditor=auditor, ctx=ctx,
-                     listsubrepos=listsubrepos, warn=warn, badfn=None)
+                     auditor=auditor, ctx=ctx, listsubrepos=listsubrepos,
+                     warn=warn, badfn=None)
         m = intersectmatchers(m, im)
     if exclude:
         em = matcher(root, cwd, normalize, [], include=exclude, default=default,
-                     exact=False, auditor=auditor, ctx=ctx,
-                     listsubrepos=listsubrepos, warn=warn, badfn=None)
+                     auditor=auditor, ctx=ctx, listsubrepos=listsubrepos,
+                     warn=warn, badfn=None)
         m = differencematcher(m, em)
     return m
 
@@ -314,7 +314,7 @@
 class matcher(basematcher):
 
     def __init__(self, root, cwd, normalize, patterns, include=None,
-                 default='glob', exact=False, auditor=None, ctx=None,
+                 default='glob', auditor=None, ctx=None,
                  listsubrepos=False, warn=None, badfn=None):
         super(matcher, self).__init__(root, cwd, badfn,
                                       relativeuipath=bool(include or patterns))
@@ -342,13 +342,7 @@
             self._includeroots.update(roots)
             self._includedirs.update(dirs)
             matchfns.append(im)
-        if exact:
-            if isinstance(patterns, list):
-                self._files = patterns
-            else:
-                self._files = list(patterns)
-            matchfns.append(self.exact)
-        elif patterns:
+        if patterns:
             kindpats = normalize(patterns, default, root, cwd, auditor, warn)
             if not _kindpatsalwaysmatch(kindpats):
                 self._files = _explicitfiles(kindpats)
@@ -402,12 +396,9 @@
     def always(self):
         return self._always
 
-    def isexact(self):
-        return self.matchfn == self.exact
-
     def __repr__(self):
-        return ('<matcher files=%r, patterns=%r, includes=%r>' %
-                (self._files, self.patternspat, self.includepat))
+        return ('<matcher patterns=%r, includes=%r>' %
+                (self.patternspat, self.includepat))
 
 class exactmatcher(basematcher):
     '''Matches the input files exactly. They are interpreted as paths, not
--- a/tests/test-eolfilename.t	Wed May 17 09:26:15 2017 -0700
+++ b/tests/test-eolfilename.t	Thu May 18 23:39:39 2017 -0700
@@ -33,7 +33,7 @@
   [255]
   $ echo foo > "$A"
   $ hg debugwalk
-  matcher: <matcher files=[], patterns=None, includes=None>
+  matcher: <matcher patterns=None, includes=None>
   f  he\r (no-eol) (esc)
   llo  he\r (no-eol) (esc)
   llo
--- a/tests/test-hgignore.t	Wed May 17 09:26:15 2017 -0700
+++ b/tests/test-hgignore.t	Thu May 18 23:39:39 2017 -0700
@@ -164,7 +164,7 @@
   A b.o
 
   $ hg debugignore
-  <matcher files=[], patterns=None, includes='(?:(?:|.*/)[^/]*(?:/|$))'>
+  <matcher patterns=None, includes='(?:(?:|.*/)[^/]*(?:/|$))'>
 
   $ hg debugignore b.o
   b.o is ignored
--- a/tests/test-walk.t	Wed May 17 09:26:15 2017 -0700
+++ b/tests/test-walk.t	Thu May 18 23:39:39 2017 -0700
@@ -29,7 +29,7 @@
   $ hg commit -m "commit #0"
 
   $ hg debugwalk
-  matcher: <matcher files=[], patterns=None, includes=None>
+  matcher: <matcher patterns=None, includes=None>
   f  beans/black                     beans/black
   f  beans/borlotti                  beans/borlotti
   f  beans/kidney                    beans/kidney
@@ -44,7 +44,7 @@
   f  mammals/Procyonidae/raccoon     mammals/Procyonidae/raccoon
   f  mammals/skunk                   mammals/skunk
   $ hg debugwalk -I.
-  matcher: <matcher files=[], patterns=None, includes='(?:)'>
+  matcher: <matcher patterns=None, includes='(?:)'>
   f  beans/black                     beans/black
   f  beans/borlotti                  beans/borlotti
   f  beans/kidney                    beans/kidney
@@ -61,7 +61,7 @@
 
   $ cd mammals
   $ hg debugwalk
-  matcher: <matcher files=[], patterns=None, includes=None>
+  matcher: <matcher patterns=None, includes=None>
   f  beans/black                     ../beans/black
   f  beans/borlotti                  ../beans/borlotti
   f  beans/kidney                    ../beans/kidney
@@ -76,7 +76,7 @@
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
   f  mammals/skunk                   skunk
   $ hg debugwalk -X ../beans
-  matcher: <differencematcher m1=<matcher files=[], patterns=None, includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns=None, includes=None>, m2=<matcher patterns=None, includes='(?:beans(?:/|$))'>>
   f  fennel                          ../fennel
   f  fenugreek                       ../fenugreek
   f  fiddlehead                      ../fiddlehead
@@ -85,31 +85,31 @@
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
   f  mammals/skunk                   skunk
   $ hg debugwalk -I '*k'
-  matcher: <matcher files=[], patterns=None, includes='(?:mammals\\/[^/]*k(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:mammals\\/[^/]*k(?:/|$))'>
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'glob:*k'
-  matcher: <matcher files=[], patterns=None, includes='(?:mammals\\/[^/]*k(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:mammals\\/[^/]*k(?:/|$))'>
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'relglob:*k'
-  matcher: <matcher files=[], patterns=None, includes='(?:(?:|.*/)[^/]*k(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:(?:|.*/)[^/]*k(?:/|$))'>
   f  beans/black    ../beans/black
   f  fenugreek      ../fenugreek
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'relglob:*k' .
-  matcher: <intersectionmatcher m1=<matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:(?:|.*/)[^/]*k(?:/|$))'>>
+  matcher: <intersectionmatcher m1=<matcher patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:(?:|.*/)[^/]*k(?:/|$))'>>
   f  mammals/skunk  skunk
   $ hg debugwalk -I 're:.*k$'
-  matcher: <matcher files=[], patterns=None, includes='(?:.*k$)'>
+  matcher: <matcher patterns=None, includes='(?:.*k$)'>
   f  beans/black    ../beans/black
   f  fenugreek      ../fenugreek
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'relre:.*k$'
-  matcher: <matcher files=[], patterns=None, includes='(?:.*.*k$)'>
+  matcher: <matcher patterns=None, includes='(?:.*.*k$)'>
   f  beans/black    ../beans/black
   f  fenugreek      ../fenugreek
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'path:beans'
-  matcher: <matcher files=[], patterns=None, includes='(?:^beans(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:^beans(?:/|$))'>
   f  beans/black     ../beans/black
   f  beans/borlotti  ../beans/borlotti
   f  beans/kidney    ../beans/kidney
@@ -117,7 +117,7 @@
   f  beans/pinto     ../beans/pinto
   f  beans/turtle    ../beans/turtle
   $ hg debugwalk -I 'relpath:detour/../../beans'
-  matcher: <matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:beans(?:/|$))'>
   f  beans/black     ../beans/black
   f  beans/borlotti  ../beans/borlotti
   f  beans/kidney    ../beans/kidney
@@ -126,27 +126,27 @@
   f  beans/turtle    ../beans/turtle
 
   $ hg debugwalk 'rootfilesin:'
-  matcher: <matcher files=[], patterns='(?:^[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^[^/]+$)', includes=None>
   f  fennel      ../fennel
   f  fenugreek   ../fenugreek
   f  fiddlehead  ../fiddlehead
   $ hg debugwalk -I 'rootfilesin:'
-  matcher: <matcher files=[], patterns=None, includes='(?:^[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^[^/]+$)'>
   f  fennel      ../fennel
   f  fenugreek   ../fenugreek
   f  fiddlehead  ../fiddlehead
   $ hg debugwalk 'rootfilesin:.'
-  matcher: <matcher files=[], patterns='(?:^[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^[^/]+$)', includes=None>
   f  fennel      ../fennel
   f  fenugreek   ../fenugreek
   f  fiddlehead  ../fiddlehead
   $ hg debugwalk -I 'rootfilesin:.'
-  matcher: <matcher files=[], patterns=None, includes='(?:^[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^[^/]+$)'>
   f  fennel      ../fennel
   f  fenugreek   ../fenugreek
   f  fiddlehead  ../fiddlehead
   $ hg debugwalk -X 'rootfilesin:'
-  matcher: <differencematcher m1=<matcher files=[], patterns=None, includes=None>, m2=<matcher files=[], patterns=None, includes='(?:^[^/]+$)'>>
+  matcher: <differencematcher m1=<matcher patterns=None, includes=None>, m2=<matcher patterns=None, includes='(?:^[^/]+$)'>>
   f  beans/black                     ../beans/black
   f  beans/borlotti                  ../beans/borlotti
   f  beans/kidney                    ../beans/kidney
@@ -158,15 +158,15 @@
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
   f  mammals/skunk                   skunk
   $ hg debugwalk 'rootfilesin:fennel'
-  matcher: <matcher files=[], patterns='(?:^fennel/[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^fennel/[^/]+$)', includes=None>
   $ hg debugwalk -I 'rootfilesin:fennel'
-  matcher: <matcher files=[], patterns=None, includes='(?:^fennel/[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^fennel/[^/]+$)'>
   $ hg debugwalk 'rootfilesin:skunk'
-  matcher: <matcher files=[], patterns='(?:^skunk/[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^skunk/[^/]+$)', includes=None>
   $ hg debugwalk -I 'rootfilesin:skunk'
-  matcher: <matcher files=[], patterns=None, includes='(?:^skunk/[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^skunk/[^/]+$)'>
   $ hg debugwalk 'rootfilesin:beans'
-  matcher: <matcher files=[], patterns='(?:^beans/[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^beans/[^/]+$)', includes=None>
   f  beans/black     ../beans/black
   f  beans/borlotti  ../beans/borlotti
   f  beans/kidney    ../beans/kidney
@@ -174,7 +174,7 @@
   f  beans/pinto     ../beans/pinto
   f  beans/turtle    ../beans/turtle
   $ hg debugwalk -I 'rootfilesin:beans'
-  matcher: <matcher files=[], patterns=None, includes='(?:^beans/[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^beans/[^/]+$)'>
   f  beans/black     ../beans/black
   f  beans/borlotti  ../beans/borlotti
   f  beans/kidney    ../beans/kidney
@@ -182,19 +182,19 @@
   f  beans/pinto     ../beans/pinto
   f  beans/turtle    ../beans/turtle
   $ hg debugwalk 'rootfilesin:mammals'
-  matcher: <matcher files=[], patterns='(?:^mammals/[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^mammals/[^/]+$)', includes=None>
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'rootfilesin:mammals'
-  matcher: <matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^mammals/[^/]+$)'>
   f  mammals/skunk  skunk
   $ hg debugwalk 'rootfilesin:mammals/'
-  matcher: <matcher files=[], patterns='(?:^mammals/[^/]+$)', includes=None>
+  matcher: <matcher patterns='(?:^mammals/[^/]+$)', includes=None>
   f  mammals/skunk  skunk
   $ hg debugwalk -I 'rootfilesin:mammals/'
-  matcher: <matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)'>
+  matcher: <matcher patterns=None, includes='(?:^mammals/[^/]+$)'>
   f  mammals/skunk  skunk
   $ hg debugwalk -X 'rootfilesin:mammals'
-  matcher: <differencematcher m1=<matcher files=[], patterns=None, includes=None>, m2=<matcher files=[], patterns=None, includes='(?:^mammals/[^/]+$)'>>
+  matcher: <differencematcher m1=<matcher patterns=None, includes=None>, m2=<matcher patterns=None, includes='(?:^mammals/[^/]+$)'>>
   f  beans/black                     ../beans/black
   f  beans/borlotti                  ../beans/borlotti
   f  beans/kidney                    ../beans/kidney
@@ -209,31 +209,31 @@
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
 
   $ hg debugwalk .
-  matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals(?:/|$))', includes=None>
   f  mammals/Procyonidae/cacomistle  Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
   f  mammals/skunk                   skunk
   $ hg debugwalk -I.
-  matcher: <matcher files=[], patterns=None, includes='(?:mammals(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:mammals(?:/|$))'>
   f  mammals/Procyonidae/cacomistle  Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
   f  mammals/skunk                   skunk
   $ hg debugwalk Procyonidae
-  matcher: <matcher files=['mammals/Procyonidae'], patterns='(?:mammals\\/Procyonidae(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals\\/Procyonidae(?:/|$))', includes=None>
   f  mammals/Procyonidae/cacomistle  Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
 
   $ cd Procyonidae
   $ hg debugwalk .
-  matcher: <matcher files=['mammals/Procyonidae'], patterns='(?:mammals\\/Procyonidae(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals\\/Procyonidae(?:/|$))', includes=None>
   f  mammals/Procyonidae/cacomistle  cacomistle
   f  mammals/Procyonidae/coatimundi  coatimundi
   f  mammals/Procyonidae/raccoon     raccoon
   $ hg debugwalk ..
-  matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals(?:/|$))', includes=None>
   f  mammals/Procyonidae/cacomistle  cacomistle
   f  mammals/Procyonidae/coatimundi  coatimundi
   f  mammals/Procyonidae/raccoon     raccoon
@@ -241,7 +241,7 @@
   $ cd ..
 
   $ hg debugwalk ../beans
-  matcher: <matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:beans(?:/|$))', includes=None>
   f  beans/black     ../beans/black
   f  beans/borlotti  ../beans/borlotti
   f  beans/kidney    ../beans/kidney
@@ -249,7 +249,7 @@
   f  beans/pinto     ../beans/pinto
   f  beans/turtle    ../beans/turtle
   $ hg debugwalk .
-  matcher: <matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals(?:/|$))', includes=None>
   f  mammals/Procyonidae/cacomistle  Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     Procyonidae/raccoon
@@ -263,7 +263,7 @@
   $ cd ..
 
   $ hg debugwalk -Ibeans
-  matcher: <matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:beans(?:/|$))'>
   f  beans/black     beans/black
   f  beans/borlotti  beans/borlotti
   f  beans/kidney    beans/kidney
@@ -271,56 +271,56 @@
   f  beans/pinto     beans/pinto
   f  beans/turtle    beans/turtle
   $ hg debugwalk -I '{*,{b,m}*/*}k'
-  matcher: <matcher files=[], patterns=None, includes='(?:(?:[^/]*|(?:b|m)[^/]*\\/[^/]*)k(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:(?:[^/]*|(?:b|m)[^/]*\\/[^/]*)k(?:/|$))'>
   f  beans/black    beans/black
   f  fenugreek      fenugreek
   f  mammals/skunk  mammals/skunk
   $ hg debugwalk -Ibeans mammals
-  matcher: <intersectionmatcher m1=<matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>>
+  matcher: <intersectionmatcher m1=<matcher patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:beans(?:/|$))'>>
   $ hg debugwalk -Inon-existent
-  matcher: <matcher files=[], patterns=None, includes='(?:non\\-existent(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:non\\-existent(?:/|$))'>
   $ hg debugwalk -Inon-existent -Ibeans/black
-  matcher: <matcher files=[], patterns=None, includes='(?:non\\-existent(?:/|$)|beans\\/black(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:non\\-existent(?:/|$)|beans\\/black(?:/|$))'>
   f  beans/black  beans/black
   $ hg debugwalk -Ibeans beans/black
-  matcher: <intersectionmatcher m1=<matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>>
+  matcher: <intersectionmatcher m1=<matcher patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:beans(?:/|$))'>>
   f  beans/black  beans/black  exact
   $ hg debugwalk -Ibeans/black beans
-  matcher: <intersectionmatcher m1=<matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>>
+  matcher: <intersectionmatcher m1=<matcher patterns='(?:beans(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>>
   f  beans/black  beans/black
   $ hg debugwalk -Xbeans/black beans
-  matcher: <differencematcher m1=<matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns='(?:beans(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>>
   f  beans/borlotti  beans/borlotti
   f  beans/kidney    beans/kidney
   f  beans/navy      beans/navy
   f  beans/pinto     beans/pinto
   f  beans/turtle    beans/turtle
   $ hg debugwalk -Xbeans/black -Ibeans
-  matcher: <differencematcher m1=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns=None, includes='(?:beans(?:/|$))'>, m2=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>>
   f  beans/borlotti  beans/borlotti
   f  beans/kidney    beans/kidney
   f  beans/navy      beans/navy
   f  beans/pinto     beans/pinto
   f  beans/turtle    beans/turtle
   $ hg debugwalk -Xbeans/black beans/black
-  matcher: <differencematcher m1=<matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>>
   f  beans/black  beans/black  exact
   $ hg debugwalk -Xbeans/black -Ibeans/black
-  matcher: <differencematcher m1=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>, m2=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>, m2=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>>
   $ hg debugwalk -Xbeans beans/black
-  matcher: <differencematcher m1=<matcher files=['beans/black'], patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns='(?:beans\\/black(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:beans(?:/|$))'>>
   f  beans/black  beans/black  exact
   $ hg debugwalk -Xbeans -Ibeans/black
-  matcher: <differencematcher m1=<matcher files=[], patterns=None, includes='(?:beans\\/black(?:/|$))'>, m2=<matcher files=[], patterns=None, includes='(?:beans(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns=None, includes='(?:beans\\/black(?:/|$))'>, m2=<matcher patterns=None, includes='(?:beans(?:/|$))'>>
   $ hg debugwalk 'glob:mammals/../beans/b*'
-  matcher: <matcher files=['beans'], patterns='(?:beans\\/b[^/]*$)', includes=None>
+  matcher: <matcher patterns='(?:beans\\/b[^/]*$)', includes=None>
   f  beans/black     beans/black
   f  beans/borlotti  beans/borlotti
   $ hg debugwalk '-X*/Procyonidae' mammals
-  matcher: <differencematcher m1=<matcher files=['mammals'], patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher files=[], patterns=None, includes='(?:[^/]*\\/Procyonidae(?:/|$))'>>
+  matcher: <differencematcher m1=<matcher patterns='(?:mammals(?:/|$))', includes=None>, m2=<matcher patterns=None, includes='(?:[^/]*\\/Procyonidae(?:/|$))'>>
   f  mammals/skunk  mammals/skunk
   $ hg debugwalk path:mammals
-  matcher: <matcher files=['mammals'], patterns='(?:^mammals(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:^mammals(?:/|$))', includes=None>
   f  mammals/Procyonidae/cacomistle  mammals/Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  mammals/Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     mammals/Procyonidae/raccoon
@@ -347,7 +347,7 @@
 Test absolute paths:
 
   $ hg debugwalk `pwd`/beans
-  matcher: <matcher files=['beans'], patterns='(?:beans(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:beans(?:/|$))', includes=None>
   f  beans/black     beans/black
   f  beans/borlotti  beans/borlotti
   f  beans/kidney    beans/kidney
@@ -361,7 +361,7 @@
 Test patterns:
 
   $ hg debugwalk glob:\*
-  matcher: <matcher files=['.'], patterns='(?:[^/]*$)', includes=None>
+  matcher: <matcher patterns='(?:[^/]*$)', includes=None>
   f  fennel      fennel
   f  fenugreek   fenugreek
   f  fiddlehead  fiddlehead
@@ -371,19 +371,19 @@
   adding glob:glob
   warning: filename contains ':', which is reserved on Windows: 'glob:glob'
   $ hg debugwalk glob:\*
-  matcher: <matcher files=['.'], patterns='(?:[^/]*$)', includes=None>
+  matcher: <matcher patterns='(?:[^/]*$)', includes=None>
   f  fennel      fennel
   f  fenugreek   fenugreek
   f  fiddlehead  fiddlehead
   f  glob:glob   glob:glob
   $ hg debugwalk glob:glob
-  matcher: <matcher files=['glob'], patterns='(?:glob$)', includes=None>
+  matcher: <matcher patterns='(?:glob$)', includes=None>
   glob: No such file or directory
   $ hg debugwalk glob:glob:glob
-  matcher: <matcher files=['glob:glob'], patterns='(?:glob\\:glob$)', includes=None>
+  matcher: <matcher patterns='(?:glob\\:glob$)', includes=None>
   f  glob:glob  glob:glob  exact
   $ hg debugwalk path:glob:glob
-  matcher: <matcher files=['glob:glob'], patterns='(?:^glob\\:glob(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:^glob\\:glob(?:/|$))', includes=None>
   f  glob:glob  glob:glob  exact
   $ rm glob:glob
   $ hg addremove
@@ -391,38 +391,38 @@
 #endif
 
   $ hg debugwalk 'glob:**e'
-  matcher: <matcher files=['.'], patterns='(?:.*e$)', includes=None>
+  matcher: <matcher patterns='(?:.*e$)', includes=None>
   f  beans/turtle                    beans/turtle
   f  mammals/Procyonidae/cacomistle  mammals/Procyonidae/cacomistle
 
   $ hg debugwalk 're:.*[kb]$'
-  matcher: <matcher files=['.'], patterns='(?:.*[kb]$)', includes=None>
+  matcher: <matcher patterns='(?:.*[kb]$)', includes=None>
   f  beans/black    beans/black
   f  fenugreek      fenugreek
   f  mammals/skunk  mammals/skunk
 
   $ hg debugwalk path:beans/black
-  matcher: <matcher files=['beans/black'], patterns='(?:^beans\\/black(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:^beans\\/black(?:/|$))', includes=None>
   f  beans/black  beans/black  exact
   $ hg debugwalk path:beans//black
-  matcher: <matcher files=['beans/black'], patterns='(?:^beans\\/black(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:^beans\\/black(?:/|$))', includes=None>
   f  beans/black  beans/black  exact
 
   $ hg debugwalk relglob:Procyonidae
-  matcher: <matcher files=['.'], patterns='(?:(?:|.*/)Procyonidae$)', includes=None>
+  matcher: <matcher patterns='(?:(?:|.*/)Procyonidae$)', includes=None>
   $ hg debugwalk 'relglob:Procyonidae/**'
-  matcher: <matcher files=['.'], patterns='(?:(?:|.*/)Procyonidae\\/.*$)', includes=None>
+  matcher: <matcher patterns='(?:(?:|.*/)Procyonidae\\/.*$)', includes=None>
   f  mammals/Procyonidae/cacomistle  mammals/Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  mammals/Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     mammals/Procyonidae/raccoon
   $ hg debugwalk 'relglob:Procyonidae/**' fennel
-  matcher: <matcher files=['.', 'fennel'], patterns='(?:(?:|.*/)Procyonidae\\/.*$|fennel(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:(?:|.*/)Procyonidae\\/.*$|fennel(?:/|$))', includes=None>
   f  fennel                          fennel                          exact
   f  mammals/Procyonidae/cacomistle  mammals/Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  mammals/Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     mammals/Procyonidae/raccoon
   $ hg debugwalk beans 'glob:beans/*'
-  matcher: <matcher files=['beans', 'beans'], patterns='(?:beans(?:/|$)|beans\\/[^/]*$)', includes=None>
+  matcher: <matcher patterns='(?:beans(?:/|$)|beans\\/[^/]*$)', includes=None>
   f  beans/black     beans/black
   f  beans/borlotti  beans/borlotti
   f  beans/kidney    beans/kidney
@@ -430,78 +430,78 @@
   f  beans/pinto     beans/pinto
   f  beans/turtle    beans/turtle
   $ hg debugwalk 'glob:mamm**'
-  matcher: <matcher files=['.'], patterns='(?:mamm.*$)', includes=None>
+  matcher: <matcher patterns='(?:mamm.*$)', includes=None>
   f  mammals/Procyonidae/cacomistle  mammals/Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  mammals/Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     mammals/Procyonidae/raccoon
   f  mammals/skunk                   mammals/skunk
   $ hg debugwalk 'glob:mamm**' fennel
-  matcher: <matcher files=['.', 'fennel'], patterns='(?:mamm.*$|fennel(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mamm.*$|fennel(?:/|$))', includes=None>
   f  fennel                          fennel                          exact
   f  mammals/Procyonidae/cacomistle  mammals/Procyonidae/cacomistle
   f  mammals/Procyonidae/coatimundi  mammals/Procyonidae/coatimundi
   f  mammals/Procyonidae/raccoon     mammals/Procyonidae/raccoon
   f  mammals/skunk                   mammals/skunk
   $ hg debugwalk 'glob:j*'
-  matcher: <matcher files=['.'], patterns='(?:j[^/]*$)', includes=None>
+  matcher: <matcher patterns='(?:j[^/]*$)', includes=None>
   $ hg debugwalk NOEXIST
-  matcher: <matcher files=['NOEXIST'], patterns='(?:NOEXIST(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:NOEXIST(?:/|$))', includes=None>
   NOEXIST: * (glob)
 
 #if fifo
   $ mkfifo fifo
   $ hg debugwalk fifo
-  matcher: <matcher files=['fifo'], patterns='(?:fifo(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:fifo(?:/|$))', includes=None>
   fifo: unsupported file type (type is fifo)
 #endif
 
   $ rm fenugreek
   $ hg debugwalk fenugreek
-  matcher: <matcher files=['fenugreek'], patterns='(?:fenugreek(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:fenugreek(?:/|$))', includes=None>
   f  fenugreek  fenugreek  exact
   $ hg rm fenugreek
   $ hg debugwalk fenugreek
-  matcher: <matcher files=['fenugreek'], patterns='(?:fenugreek(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:fenugreek(?:/|$))', includes=None>
   f  fenugreek  fenugreek  exact
   $ touch new
   $ hg debugwalk new
-  matcher: <matcher files=['new'], patterns='(?:new(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:new(?:/|$))', includes=None>
   f  new  new  exact
 
   $ mkdir ignored
   $ touch ignored/file
   $ echo '^ignored$' > .hgignore
   $ hg debugwalk ignored
-  matcher: <matcher files=['ignored'], patterns='(?:ignored(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:ignored(?:/|$))', includes=None>
   $ hg debugwalk ignored/file
-  matcher: <matcher files=['ignored/file'], patterns='(?:ignored\\/file(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:ignored\\/file(?:/|$))', includes=None>
   f  ignored/file  ignored/file  exact
 
 Test listfile and listfile0
 
   $ $PYTHON -c "file('listfile0', 'wb').write('fenugreek\0new\0')"
   $ hg debugwalk -I 'listfile0:listfile0'
-  matcher: <matcher files=[], patterns=None, includes='(?:fenugreek(?:/|$)|new(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:fenugreek(?:/|$)|new(?:/|$))'>
   f  fenugreek  fenugreek
   f  new        new
   $ $PYTHON -c "file('listfile', 'wb').write('fenugreek\nnew\r\nmammals/skunk\n')"
   $ hg debugwalk -I 'listfile:listfile'
-  matcher: <matcher files=[], patterns=None, includes='(?:fenugreek(?:/|$)|new(?:/|$)|mammals\\/skunk(?:/|$))'>
+  matcher: <matcher patterns=None, includes='(?:fenugreek(?:/|$)|new(?:/|$)|mammals\\/skunk(?:/|$))'>
   f  fenugreek      fenugreek
   f  mammals/skunk  mammals/skunk
   f  new            new
 
   $ cd ..
   $ hg debugwalk -R t t/mammals/skunk
-  matcher: <matcher files=['mammals/skunk'], patterns='(?:mammals\\/skunk(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals\\/skunk(?:/|$))', includes=None>
   f  mammals/skunk  t/mammals/skunk  exact
   $ mkdir t2
   $ cd t2
   $ hg debugwalk -R ../t ../t/mammals/skunk
-  matcher: <matcher files=['mammals/skunk'], patterns='(?:mammals\\/skunk(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals\\/skunk(?:/|$))', includes=None>
   f  mammals/skunk  ../t/mammals/skunk  exact
   $ hg debugwalk --cwd ../t mammals/skunk
-  matcher: <matcher files=['mammals/skunk'], patterns='(?:mammals\\/skunk(?:/|$))', includes=None>
+  matcher: <matcher patterns='(?:mammals\\/skunk(?:/|$))', includes=None>
   f  mammals/skunk  mammals/skunk  exact
 
   $ cd ..