From 4bdf00b1480f6b3c752b0780169ce29d4281babf Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Sun, 26 Jul 2015 13:56:10 +0200 Subject: [PATCH] configtypes: Handle {1} correctly. --- qutebrowser/config/configtypes.py | 4 ++-- tests/config/test_configtypes.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/qutebrowser/config/configtypes.py b/qutebrowser/config/configtypes.py index 199b863a0..b9d3e3337 100644 --- a/qutebrowser/config/configtypes.py +++ b/qutebrowser/config/configtypes.py @@ -874,7 +874,7 @@ class FormatString(BaseType): s = self.transform(value) try: return s.format(**{k: '' for k in self.fields}) - except KeyError as e: + except (KeyError, IndexError) as e: raise configexc.ValidationError(value, "Invalid placeholder " "{}".format(e)) except ValueError as e: @@ -1089,7 +1089,7 @@ class SearchEngineUrl(BaseType): raise configexc.ValidationError(value, "must contain \"{}\"") try: value.format("") - except KeyError: + except (KeyError, IndexError) as e: raise configexc.ValidationError( value, "may not contain {...} (use {{ and }} for literal {/})") diff --git a/tests/config/test_configtypes.py b/tests/config/test_configtypes.py index 5786ea2b0..6805d06c4 100644 --- a/tests/config/test_configtypes.py +++ b/tests/config/test_configtypes.py @@ -1501,6 +1501,7 @@ class TestSearchEngineUrl: 'foo', # no placeholder ':{}', # invalid URL 'foo{bar}baz{}', # {bar} format string variable + '{1}{}', # numbered format string variable ]) def test_validate_invalid(self, klass, val): with pytest.raises(configexc.ValidationError): @@ -1761,6 +1762,7 @@ class TestFormatString: @pytest.mark.parametrize('val', [ '{foo} {bar} {baz}', '{foo} {bar', + '{1}', '', ]) def test_validate_invalid(self, typ, val):