diff options
author | Julian Mehne <julian.mehne@posteo.de> | 2017-12-01 15:22:01 +0100 |
---|---|---|
committer | Julian Mehne <julian.mehne@posteo.de> | 2017-12-02 00:19:37 +0100 |
commit | f89555064a810ad7fcb3cbe079639ac3f83ff07c (patch) | |
tree | 0e362e56dcf164374693079234610e6c4106f50b /tests | |
parent | 054d2a932e7cb8d18dae258750ed26fb86e650b9 (diff) |
Allow regex special characters in tagstrings.
Fixes the following crashes:
1. tag completion with regex special chars
:search tag:[<tab>
2. Changing tag representation of an (existing) tag with regex special
chars:
[tags]
[[my**tag]]
normal = '','', 'white','light red', 'white','#d66'
3. Contact completion with regex special chars and no external command:
To:**foo<tab>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/addressbook/init_test.py | 9 | ||||
-rw-r--r-- | tests/completion_test.py | 9 | ||||
-rw-r--r-- | tests/settings/manager_test.py | 12 |
3 files changed, 30 insertions, 0 deletions
diff --git a/tests/addressbook/init_test.py b/tests/addressbook/init_test.py index a7f3f9b5..7f642933 100644 --- a/tests/addressbook/init_test.py +++ b/tests/addressbook/init_test.py @@ -65,3 +65,12 @@ class TestAddressBook(unittest.TestCase): actual = abook.lookup('Own') expected = [contacts[1]] self.assertListEqual(actual, expected) + + def test_lookup_can_handle_special_regex_chars(self): + contacts = [('name [work]', 'email@example.com'), + ('My Own Name', 'other@example.com'), + ('someone', 'someone@example.com')] + abook = _AddressBook(contacts) + actual = abook.lookup('[wor') + expected = [contacts[0]] + self.assertListEqual(actual, expected) diff --git a/tests/completion_test.py b/tests/completion_test.py index 855df03f..5b335779 100644 --- a/tests/completion_test.py +++ b/tests/completion_test.py @@ -87,3 +87,12 @@ class AbooksCompleterTest(unittest.TestCase): expected = [(r""""all 'fanzy' \"stuff\" at, once" <all@example.com>""", 50)] self._assert_only_one_list_entry(actual, expected) + + +class StringlistCompleterTest(unittest.TestCase): + def test_dont_choke_on_special_regex_characters(self): + tags = ['[match]', 'nomatch'] + completer = completion.StringlistCompleter(tags) + actual = completer.complete('[', 1) + expected = [(tags[0], len(tags[0]))] + self.assertListEqual(actual, expected) diff --git a/tests/settings/manager_test.py b/tests/settings/manager_test.py index a09dbf15..975bcb0e 100644 --- a/tests/settings/manager_test.py +++ b/tests/settings/manager_test.py @@ -94,6 +94,18 @@ class TestSettingsManager(unittest.TestCase): setting = manager.get_notmuch_setting('foo', 'bar') self.assertIsNone(setting) + def test_dont_choke_on_regex_special_chars_in_tagstring(self): + tag = 'to**do' + with tempfile.NamedTemporaryFile(delete=False) as f: + f.write(textwrap.dedent("""\ + [tags] + [[{tag}]] + normal = '','', 'white','light red', 'white','#d66' + """.format(tag=tag))) + self.addCleanup(os.unlink, f.name) + manager = SettingsManager(alot_rc=f.name) + manager.get_tagstring_representation(tag) + class TestSettingsManagerGetAccountByAddress(utilities.TestCaseClassCleanup): """Test the get_account_by_address helper.""" |