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
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 -*-
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
Franz Glasner <fzglas.hg@dom66.de>
parents: 298
diff changeset
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())