diff options
author | Tarek Ziadé <ziade.tarek@gmail.com> | 2009-04-05 21:49:36 (GMT) |
---|---|---|
committer | Tarek Ziadé <ziade.tarek@gmail.com> | 2009-04-05 21:49:36 (GMT) |
commit | 889b0aa4506d5ea43985865a44562ebd39b3bf00 (patch) | |
tree | 301ad6342823c02e8ddbff55a0c3b0dbf9159067 /Lib/distutils | |
parent | 965ce8799190b7017a41cd00eede083b342a15fb (diff) | |
download | cpython-889b0aa4506d5ea43985865a44562ebd39b3bf00.zip cpython-889b0aa4506d5ea43985865a44562ebd39b3bf00.tar.gz cpython-889b0aa4506d5ea43985865a44562ebd39b3bf00.tar.bz2 |
Merged revisions 71280 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r71280 | tarek.ziade | 2009-04-05 23:44:08 +0200 (Sun, 05 Apr 2009) | 1 line
Fixed #1491431: distutils.filelist.glob_to_re was broken for some edge cases (detailed in the test
........
Diffstat (limited to 'Lib/distutils')
-rw-r--r-- | Lib/distutils/filelist.py | 3 | ||||
-rw-r--r-- | Lib/distutils/tests/test_filelist.py | 23 |
2 files changed, 25 insertions, 1 deletions
diff --git a/Lib/distutils/filelist.py b/Lib/distutils/filelist.py index a80c71e..58a2bfb 100644 --- a/Lib/distutils/filelist.py +++ b/Lib/distutils/filelist.py @@ -289,7 +289,8 @@ def glob_to_re(pattern): # character except the special characters. # XXX currently the "special characters" are just slash -- i.e. this is # Unix-only. - pattern_re = re.sub(r'(^|[^\\])\.', r'\1[^/]', pattern_re) + pattern_re = re.sub(r'((?<!\\)(\\\\)*)\.', r'\1[^/]', pattern_re) + return pattern_re diff --git a/Lib/distutils/tests/test_filelist.py b/Lib/distutils/tests/test_filelist.py new file mode 100644 index 0000000..86db557 --- /dev/null +++ b/Lib/distutils/tests/test_filelist.py @@ -0,0 +1,23 @@ +"""Tests for distutils.filelist.""" +import unittest +from distutils.filelist import glob_to_re + +class FileListTestCase(unittest.TestCase): + + def test_glob_to_re(self): + # simple cases + self.assertEquals(glob_to_re('foo*'), 'foo[^/]*$') + self.assertEquals(glob_to_re('foo?'), 'foo[^/]$') + self.assertEquals(glob_to_re('foo??'), 'foo[^/][^/]$') + + # special cases + self.assertEquals(glob_to_re(r'foo\\*'), r'foo\\\\[^/]*$') + self.assertEquals(glob_to_re(r'foo\\\*'), r'foo\\\\\\[^/]*$') + self.assertEquals(glob_to_re('foo????'), r'foo[^/][^/][^/][^/]$') + self.assertEquals(glob_to_re(r'foo\\??'), r'foo\\\\[^/][^/]$') + +def test_suite(): + return unittest.makeSuite(FileListTestCase) + +if __name__ == "__main__": + unittest.main(defaultTest="test_suite") |