From: R. David Murray Date: Sat, 10 Jul 2010 14:00:10 +0000 (+0000) Subject: Merged revisions 82766 via svnmerge from X-Git-Tag: v3.1.3rc1~531 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ca126a02ea71aa55de59c12bdd99ec2f7cb6d89d;p=python Merged revisions 82766 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k Since 'purge' is an API change, modified it to be _purge for 3.1 and deleted the doc update. ........ r82766 | r.david.murray | 2010-07-10 09:52:13 -0400 (Sat, 10 Jul 2010) | 5 lines Fix 'refleak' introduced by fnmatch cache purge tests. This introduces a 'purge' function for the fnmatch module analogous to the 'purge' function in the re module. ........ --- diff --git a/Lib/fnmatch.py b/Lib/fnmatch.py index 26ae4ccb14..be1fd1d16c 100644 --- a/Lib/fnmatch.py +++ b/Lib/fnmatch.py @@ -12,12 +12,17 @@ corresponding to PATTERN. (It does not compile it.) import re -__all__ = ["filter", "fnmatch","fnmatchcase","translate"] +__all__ = ["filter", "fnmatch", "fnmatchcase", "translate"] _cache = {} # Maps text patterns to compiled regexen. _cacheb = {} # Ditto for bytes patterns. _MAXCACHE = 100 # Maximum size of caches +def _purge(): + """Clear the pattern cache""" + _cache.clear() + _cacheb.clear() + def fnmatch(name, pat): """Test whether FILENAME matches PATTERN. diff --git a/Lib/test/test_fnmatch.py b/Lib/test/test_fnmatch.py index f2966ad724..abf8811461 100644 --- a/Lib/test/test_fnmatch.py +++ b/Lib/test/test_fnmatch.py @@ -3,10 +3,14 @@ from test import support import unittest -from fnmatch import fnmatch, fnmatchcase, _MAXCACHE, _cache, _cacheb +from fnmatch import fnmatch, fnmatchcase, _MAXCACHE, _cache, _cacheb, _purge class FnmatchTestCase(unittest.TestCase): + + def tearDown(self): + _purge() + def check_match(self, filename, pattern, should_match=1): if should_match: self.assertTrue(fnmatch(filename, pattern),