From f40f4082baaf11ba09312f37eb34e2f97e9afffe Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 27 Feb 2018 07:56:10 +0100 Subject: [PATCH] Validate configtypes.Key correctly --- qutebrowser/config/configtypes.py | 9 +++++---- tests/unit/config/test_configtypes.py | 4 ++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/qutebrowser/config/configtypes.py b/qutebrowser/config/configtypes.py index 196e19647..14855bf03 100644 --- a/qutebrowser/config/configtypes.py +++ b/qutebrowser/config/configtypes.py @@ -1652,7 +1652,8 @@ class Key(BaseType): self._basic_py_validation(value, str) if not value: return None - #if utils.is_special_key(value): - # value = '<{}>'.format(utils.normalize_keystr(value[1:-1])) - #return value - return keyutils.KeySequence.parse(value) + + try: + return keyutils.KeySequence.parse(value) + except keyutils.KeyParseError as e: + raise configexc.ValidationError(value, str(e)) diff --git a/tests/unit/config/test_configtypes.py b/tests/unit/config/test_configtypes.py index 81a7d53e1..41da86ff8 100644 --- a/tests/unit/config/test_configtypes.py +++ b/tests/unit/config/test_configtypes.py @@ -2064,6 +2064,10 @@ class TestKey: def test_to_py_valid(self, klass, val, expected): assert klass().to_py(val) == expected + def test_to_py_invalid(self, klass): + with pytest.raises(configexc.ValidationError): + klass().to_py('\U00010000') + @pytest.mark.parametrize('first, second, equal', [ (re.compile('foo'), RegexEq('foo'), True),