manifest: make manifest.intersectfiles() internal
manifest.intersectfiles() is just a utility used by manifest.matches(), and
a future commit removes intersectfiles for treemanifest for optimization
purposes.
This commit makes the intersectfiles methods on manifestdict and treemanifest
internal, and converts its test to a more generic testMatches(), which has the
exact same coverage.
--- a/mercurial/manifest.py Sat Mar 28 11:19:34 2015 +0100
+++ b/mercurial/manifest.py Mon Mar 30 10:43:52 2015 -0700
@@ -131,7 +131,7 @@
def keys(self):
return list(self.iterkeys())
- def intersectfiles(self, files):
+ def _intersectfiles(self, files):
'''make a new lazymanifest with the intersection of self with files
The algorithm assumes that files is much smaller than self.'''
@@ -166,7 +166,7 @@
files = match.files()
if (len(files) < 100 and (match.isexact() or
(not match.anypats() and util.all(fn in self for fn in files)))):
- return self.intersectfiles(files)
+ return self._intersectfiles(files)
lm = manifestdict('')
lm._lm = self._lm.filtercopy(match)
@@ -467,7 +467,7 @@
copy._flags = dict.copy(self._flags)
return copy
- def intersectfiles(self, files):
+ def _intersectfiles(self, files):
'''make a new treemanifest with the intersection of self with files
The algorithm assumes that files is much smaller than self.'''
@@ -521,7 +521,7 @@
files = match.files()
if (match.isexact() or
(not match.anypats() and util.all(fn in self for fn in files))):
- return self.intersectfiles(files)
+ return self._intersectfiles(files)
m = self.copy()
for fn in m.keys():
--- a/tests/test-manifest.py Sat Mar 28 11:19:34 2015 +0100
+++ b/tests/test-manifest.py Mon Mar 30 10:43:52 2015 -0700
@@ -250,9 +250,13 @@
self.assertEqual(HUGE_MANIFEST_ENTRIES, len(m))
self.assertEqual(len(m), len(list(m)))
- def testIntersectFiles(self):
+ def testMatches(self):
m = parsemanifest(A_HUGE_MANIFEST)
- m2 = m.intersectfiles(['file1', 'file200', 'file300'])
+
+ match = matchmod.match('/', '',
+ ['file1', 'file200', 'file300'], exact=True)
+ m2 = m.matches(match)
+
w = ('file1\0%sx\n'
'file200\0%sl\n'
'file300\0%s\n') % (HASH_2, HASH_1, HASH_1)