Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | """Test cases for the fnmatch module.""" |
2 | ||
3 | from test import test_support | |
4 | import unittest | |
5 | ||
6 | from fnmatch import fnmatch, fnmatchcase | |
7 | ||
8 | ||
9 | class FnmatchTestCase(unittest.TestCase): | |
10 | def check_match(self, filename, pattern, should_match=1): | |
11 | if should_match: | |
12 | self.assert_(fnmatch(filename, pattern), | |
13 | "expected %r to match pattern %r" | |
14 | % (filename, pattern)) | |
15 | else: | |
16 | self.assert_(not fnmatch(filename, pattern), | |
17 | "expected %r not to match pattern %r" | |
18 | % (filename, pattern)) | |
19 | ||
20 | def test_fnmatch(self): | |
21 | check = self.check_match | |
22 | check('abc', 'abc') | |
23 | check('abc', '?*?') | |
24 | check('abc', '???*') | |
25 | check('abc', '*???') | |
26 | check('abc', '???') | |
27 | check('abc', '*') | |
28 | check('abc', 'ab[cd]') | |
29 | check('abc', 'ab[!de]') | |
30 | check('abc', 'ab[de]', 0) | |
31 | check('a', '??', 0) | |
32 | check('a', 'b', 0) | |
33 | ||
34 | # these test that '\' is handled correctly in character sets; | |
35 | # see SF bug #??? | |
36 | check('\\', r'[\]') | |
37 | check('a', r'[!\]') | |
38 | check('\\', r'[!\]', 0) | |
39 | ||
40 | ||
41 | def test_main(): | |
42 | test_support.run_unittest(FnmatchTestCase) | |
43 | ||
44 | ||
45 | if __name__ == "__main__": | |
46 | test_main() |