annotate tests/test_match.py @ 346:d47965f97abb

treesum: Now handle all help related stuff in main()
author Franz Glasner <fzglas.hg@dom66.de>
date Tue, 01 Apr 2025 18:49:27 +0200
parents 285ee01dbb39
children 7f797d71bd5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
296
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
2 r"""Unit tests for :mod:`cutils.util.glob`
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
3
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
4 """
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
5
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
6 from __future__ import absolute_import, print_function
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
7
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
8 import _test_setup # noqa: F401 imported but unused
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
9
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
10 import sys
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
11 import unittest
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
12
297
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
13 from cutils.util import PY2
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
14 from cutils.util.glob import CharIter, glob_to_regexp
296
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
15
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
16
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
17 class TestCharIter(unittest.TestCase):
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
18
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
19 def test_transitive_iter(self):
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
20 it = CharIter("1234")
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
21 self.assertIs(iter(it), it)
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
22
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
23 def test_native_str(self):
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
24 it = CharIter("1234")
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
25 chars = []
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
26 for c in it:
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
27 chars.append(c)
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
28 self.assertEqual("1234", "".join(chars))
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
29
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
30 def test_unicode_str(self):
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
31 it = CharIter(u"1234")
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
32 chars = []
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
33 for c in it:
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
34 chars.append(c)
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
35 self.assertEqual(u"1234", "".join(chars))
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
36
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
37 def test_byte_str(self):
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
38 it = CharIter(b"1234")
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
39 chars = []
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
40 for c in it:
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
41 chars.append(c)
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
42 self.assertEqual(b"1234", b"".join(chars))
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
43
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
44 def test_peek_exhausted(self):
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
45 it = CharIter("1234")
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
46 for _ in it:
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
47 pass
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
48 self.assertIsNone(it.peek())
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
49
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
50 def test_peek_first(self):
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
51 it = CharIter("1234")
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
52 self.assertEqual("1", it.peek())
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
53 chars = "".join(it)
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
54 self.assertEqual("1234", chars)
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
55 self.assertIsNone(it.peek())
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
56
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
57 def test_peek_from_second(self):
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
58 it = CharIter("1234")
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
59 self.assertEqual("1", it.peek())
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
60 self.assertEqual("1", next(it))
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
61 self.assertEqual("2", it.peek())
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
62 chars = "".join(it)
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
63 self.assertEqual("234", chars)
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
64 self.assertIsNone(it.peek())
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
65
298
16a5c337fcb9 FIX: peeking for byte strings on Python3 needs to convert from int to bytes
Franz Glasner <fzglas.hg@dom66.de>
parents: 297
diff changeset
66 def test_peek_from_second_with_bytes(self):
16a5c337fcb9 FIX: peeking for byte strings on Python3 needs to convert from int to bytes
Franz Glasner <fzglas.hg@dom66.de>
parents: 297
diff changeset
67 it = CharIter(b"1234")
16a5c337fcb9 FIX: peeking for byte strings on Python3 needs to convert from int to bytes
Franz Glasner <fzglas.hg@dom66.de>
parents: 297
diff changeset
68 self.assertEqual(b"1", it.peek())
16a5c337fcb9 FIX: peeking for byte strings on Python3 needs to convert from int to bytes
Franz Glasner <fzglas.hg@dom66.de>
parents: 297
diff changeset
69 self.assertEqual(b"1", next(it))
16a5c337fcb9 FIX: peeking for byte strings on Python3 needs to convert from int to bytes
Franz Glasner <fzglas.hg@dom66.de>
parents: 297
diff changeset
70 self.assertEqual(b"2", it.peek())
324
Franz Glasner <fzglas.hg@dom66.de>
parents: 298
diff changeset
71 self.assertEqual(b"2", it.peek()) # a second peek is idempotent
298
16a5c337fcb9 FIX: peeking for byte strings on Python3 needs to convert from int to bytes
Franz Glasner <fzglas.hg@dom66.de>
parents: 297
diff changeset
72 chars = b"".join(it)
16a5c337fcb9 FIX: peeking for byte strings on Python3 needs to convert from int to bytes
Franz Glasner <fzglas.hg@dom66.de>
parents: 297
diff changeset
73 self.assertEqual(b"234", chars)
16a5c337fcb9 FIX: peeking for byte strings on Python3 needs to convert from int to bytes
Franz Glasner <fzglas.hg@dom66.de>
parents: 297
diff changeset
74 self.assertIsNone(it.peek())
16a5c337fcb9 FIX: peeking for byte strings on Python3 needs to convert from int to bytes
Franz Glasner <fzglas.hg@dom66.de>
parents: 297
diff changeset
75
296
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
76
297
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
77 class TestGlobToRegexp(unittest.TestCase):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
78
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
79 def test_empty(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
80 self.assertEqual("", glob_to_regexp(""))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
81
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
82 def test_question_mark(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
83 self.assertEqual(".", glob_to_regexp("?"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
84
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
85 def test_single_star(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
86 self.assertEqual("[^/]*", glob_to_regexp("*"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
87
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
88 def test_double_star(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
89 self.assertEqual(".*", glob_to_regexp("**"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
90
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
91 def test_double_star_slash(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
92 self.assertEqual("(?:.*/)?", glob_to_regexp("**/"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
93
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
94 def test_double_star_in_between(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
95 if PY2:
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
96 # Python 2 escapes all alnum characters in re.escape()
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
97 self.assertEqual("part1\\/(?:.*/)?part2",
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
98 glob_to_regexp("part1/**/part2"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
99 else:
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
100
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
101 self.assertEqual("part1/(?:.*/)?part2",
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
102 glob_to_regexp("part1/**/part2"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
103
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
104 def test_double_start_in_between2(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
105 if PY2:
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
106 # Python 2 escapes all alnum characters in re.escape()
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
107 self.assertEqual("part1\\/.*\\.py", glob_to_regexp("part1/**.py"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
108 else:
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
109 self.assertEqual("part1/.*\\.py", glob_to_regexp("part1/**.py"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
110
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
111 def test_bracket_simple(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
112 self.assertEqual("[abc]", glob_to_regexp("[abc]"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
113
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
114 def test_bracket_simple_range(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
115 self.assertEqual("[a-c]", glob_to_regexp("[a-c]"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
116
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
117 def test_bracket_with_special_chars(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
118 self.assertEqual("[x*?!^]", glob_to_regexp("[x*?!^]"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
119
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
120 def test_bracket_simple_range_with_escape(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
121 self.assertEqual("[\\\\-c]", glob_to_regexp("[\\-c]"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
122
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
123 def test_bracket_not_closed(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
124 self.assertEqual("\\[a", glob_to_regexp("[a"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
125
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
126 def test_bracket_not_closed_escapes(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
127 self.assertEqual("\\[a\\*\\?", glob_to_regexp("[a*?"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
128
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
129 def test_bracket_with_dash_as_first_character(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
130 self.assertEqual("[\\-a]", glob_to_regexp("[-a]"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
131
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
132 def test_bracket_with_dash_as_last_character(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
133 self.assertEqual("[a\\-]", glob_to_regexp("[a-]"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
134
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
135 def test_bracket_with_closing_bracket(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
136 self.assertEqual("[\\]a]", glob_to_regexp("[]a]"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
137
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
138 def test_bracket_with_caret_as_first_character(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
139 self.assertEqual("[\\^a]", glob_to_regexp("[^a]"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
140
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
141 def test_bracket_negating_with_dash_as_first_character(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
142 self.assertEqual("[^\\-a]", glob_to_regexp("[!-a]"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
143
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
144 def test_bracket_negating_with_dash_as_last_character(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
145 self.assertEqual("[^a\\-]", glob_to_regexp("[!a-]"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
146
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
147 def test_bracket_negating_with_closing_bracket(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
148 self.assertEqual("[^\\]a]", glob_to_regexp("[!]a]"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
149
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
150 def test_bracket_negating_with_caret_as_first_character(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
151 self.assertEqual("[^^a]", glob_to_regexp("[!^a]"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
152
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
153 def test_simple_escapes(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
154 for c in "\\()[]{}*.?":
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
155 self.assertEqual("\\"+c, glob_to_regexp("\\"+c))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
156
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
157 def test_simple_escapes_last_backslash(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
158 self.assertEqual("\\\\", glob_to_regexp("\\"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
159
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
160 def test_auto_escapes(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
161 for c in "*.?":
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
162 self.assertEqual("\\"+c, glob_to_regexp("\\"+c))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
163
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
164 def test_group_simple(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
165 self.assertEqual("(?:abc|def)", glob_to_regexp("{abc,def}"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
166
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
167 def test_group_complex_nested(self):
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
168 self.assertEqual("(?:abc|(?:[ABQ-Z]|[^A][^/]*))",
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
169 glob_to_regexp("{abc,{[ABQ-Z],[!A]*}}"))
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
170
141a3aa0b403 First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents: 296
diff changeset
171
296
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
172 if __name__ == "__main__":
ca293f708cb4 Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
173 sys.exit(unittest.main())