Mercurial > hgrepos > Python > apps > py-cutils
annotate tests/test_match.py @ 357:7f797d71bd5e
Add SPDX license tags to unittest scripts
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 02 Apr 2025 14:05:03 +0200 |
| parents | 285ee01dbb39 |
| children |
| 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 -*- |
|
357
7f797d71bd5e
Add SPDX license tags to unittest scripts
Franz Glasner <fzglas.hg@dom66.de>
parents:
324
diff
changeset
|
2 # :- |
|
7f797d71bd5e
Add SPDX license tags to unittest scripts
Franz Glasner <fzglas.hg@dom66.de>
parents:
324
diff
changeset
|
3 # SPDX-FileCopyrightText: © 2025 Franz Glasner |
|
7f797d71bd5e
Add SPDX license tags to unittest scripts
Franz Glasner <fzglas.hg@dom66.de>
parents:
324
diff
changeset
|
4 # SPDX-License-Identifier: BSD-3-Clause |
|
7f797d71bd5e
Add SPDX license tags to unittest scripts
Franz Glasner <fzglas.hg@dom66.de>
parents:
324
diff
changeset
|
5 # :- |
|
296
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
6 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
|
7 |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
8 """ |
|
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 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
|
11 |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
12 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
|
13 |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
14 import sys |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
15 import unittest |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
16 |
|
297
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
17 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
|
18 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
|
19 |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
20 |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
21 class TestCharIter(unittest.TestCase): |
|
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_transitive_iter(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 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
|
26 |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
27 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
|
28 it = CharIter("1234") |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
29 chars = [] |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
30 for c in it: |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
31 chars.append(c) |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
32 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
|
33 |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
34 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
|
35 it = CharIter(u"1234") |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
36 chars = [] |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
37 for c in it: |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
38 chars.append(c) |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
39 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
|
40 |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
41 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
|
42 it = CharIter(b"1234") |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
43 chars = [] |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
44 for c in it: |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
45 chars.append(c) |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
46 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
|
47 |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
48 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
|
49 it = CharIter("1234") |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
50 for _ in it: |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
51 pass |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
52 self.assertIsNone(it.peek()) |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
53 |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
54 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
|
55 it = CharIter("1234") |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
56 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
|
57 chars = "".join(it) |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
58 self.assertEqual("1234", chars) |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
59 self.assertIsNone(it.peek()) |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
60 |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
61 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
|
62 it = CharIter("1234") |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
63 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
|
64 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
|
65 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
|
66 chars = "".join(it) |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
67 self.assertEqual("234", chars) |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
68 self.assertIsNone(it.peek()) |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
69 |
|
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
|
70 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
|
71 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
|
72 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
|
73 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
|
74 self.assertEqual(b"2", it.peek()) |
| 324 | 75 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
|
76 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
|
77 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
|
78 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
|
79 |
|
296
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
80 |
|
297
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
81 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
|
82 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
83 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
|
84 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
|
85 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
86 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
|
87 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
|
88 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
89 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
|
90 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
|
91 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
92 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
|
93 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
|
94 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
95 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
|
96 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
|
97 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
98 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
|
99 if PY2: |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
100 # 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
|
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 else: |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
104 |
|
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("part1/(?:.*/)?part2", |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
106 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
|
107 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
108 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
|
109 if PY2: |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
110 # 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
|
111 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
|
112 else: |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
113 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
|
114 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
115 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
|
116 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
|
117 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
118 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
|
119 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
|
120 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
121 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
|
122 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
|
123 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
124 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
|
125 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
|
126 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
127 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
|
128 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
|
129 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
130 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
|
131 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
|
132 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
133 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
|
134 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
|
135 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
136 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
|
137 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
|
138 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
139 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
|
140 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
|
141 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
142 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
|
143 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
|
144 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
145 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
|
146 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
|
147 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
148 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
|
149 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
|
150 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
151 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
|
152 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
|
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_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
|
155 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
|
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(self): |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
158 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
|
159 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
|
160 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
161 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
|
162 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
|
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_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
|
165 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
|
166 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
|
167 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
168 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
|
169 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
|
170 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
171 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
|
172 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
|
173 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
|
174 |
|
141a3aa0b403
First version of converting a glob-style pattern to a regex
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
175 |
|
296
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
176 if __name__ == "__main__": |
|
ca293f708cb4
Begin some preparation for handling glob-style patterns in treeview.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
177 sys.exit(unittest.main()) |
