Mercurial > hgrepos > Python > apps > py-cutils
annotate tests/test_match.py @ 297:141a3aa0b403
First version of converting a glob-style pattern to a regex
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Tue, 04 Mar 2025 01:52:18 +0100 |
| parents | ca293f708cb4 |
| children | 16a5c337fcb9 |
| 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 |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
66 |
|
297
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
67 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
|
68 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
69 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
|
70 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
|
71 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
72 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
|
73 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
|
74 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
75 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
|
76 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
|
77 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
78 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
|
79 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
|
80 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
81 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
|
82 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
|
83 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
84 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
|
85 if PY2: |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
86 # 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
|
87 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
|
88 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
|
89 else: |
|
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 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
|
92 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
|
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_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
|
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\\/.*\\.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
|
98 else: |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
99 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
|
100 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
101 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
|
102 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
|
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_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
|
105 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
|
106 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
107 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
|
108 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
|
109 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
110 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
|
111 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
|
112 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
113 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
|
114 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
|
115 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
116 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
|
117 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
|
118 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
119 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
|
120 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
|
121 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
122 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
|
123 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
|
124 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
125 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
|
126 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
|
127 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
128 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
|
129 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
|
130 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
131 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
|
132 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
|
133 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
134 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
|
135 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
|
136 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
137 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
|
138 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
|
139 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
140 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
|
141 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
|
142 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
143 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
|
144 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
|
145 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
|
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_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
|
148 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
|
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_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
|
151 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
|
152 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
|
153 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
154 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
|
155 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
|
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_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
|
158 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
|
159 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
|
160 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
161 |
|
296
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
162 if __name__ == "__main__": |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
163 sys.exit(unittest.main()) |
