Mercurial > hg
changeset 24495:d2a3a2808974
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.
author | Drew Gottlieb <drgott@google.com> |
---|---|
date | Mon, 30 Mar 2015 10:43:52 -0700 |
parents | f2b87f4856bf |
children | 9a4ef1b18cae |
files | mercurial/manifest.py tests/test-manifest.py |
diffstat | 2 files changed, 10 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- 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)