blob: 2f701caccaac93bfb57feace9d618b940f14cd89 [file] [log] [blame]
Fred Drake91751142001-03-21 18:29:25 +00001"""Test cases for the fnmatch module."""
2
Benjamin Petersonee8712c2008-05-20 21:35:26 +00003from test import support
Fred Drake91751142001-03-21 18:29:25 +00004import unittest
5
6from fnmatch import fnmatch, fnmatchcase
7
8
9class FnmatchTestCase(unittest.TestCase):
10 def check_match(self, filename, pattern, should_match=1):
11 if should_match:
Benjamin Petersonc9c0f202009-06-30 23:06:06 +000012 self.assertTrue(fnmatch(filename, pattern),
Fred Drake91751142001-03-21 18:29:25 +000013 "expected %r to match pattern %r"
14 % (filename, pattern))
15 else:
Benjamin Petersonc9c0f202009-06-30 23:06:06 +000016 self.assertTrue(not fnmatch(filename, pattern),
Fred Drake91751142001-03-21 18:29:25 +000017 "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
Guido van Rossumf0af3e32008-10-02 18:55:37 +000040 def test_mix_bytes_str(self):
41 self.assertRaises(TypeError, fnmatch, 'test', b'*')
42 self.assertRaises(TypeError, fnmatch, b'test', '*')
43 self.assertRaises(TypeError, fnmatchcase, 'test', b'*')
44 self.assertRaises(TypeError, fnmatchcase, b'test', '*')
45
46 def test_bytes(self):
47 self.check_match(b'test', b'te*')
48 self.check_match(b'test\xff', b'te*\xff')
Fred Drake91751142001-03-21 18:29:25 +000049
Fred Drake2e2be372001-09-20 21:33:42 +000050def test_main():
Benjamin Petersonee8712c2008-05-20 21:35:26 +000051 support.run_unittest(FnmatchTestCase)
Fred Drake2e2be372001-09-20 21:33:42 +000052
53
54if __name__ == "__main__":
55 test_main()