diff options
author | Florian Bruhin <git@the-compiler.org> | 2015-07-24 17:49:09 +0200 |
---|---|---|
committer | Florian Bruhin <git@the-compiler.org> | 2015-07-24 17:49:09 +0200 |
commit | ebdfa0be733bace5ef0af2d95451bf2135bb2edb (patch) | |
tree | f62f238f429eb0db453f8eede75e5f7ec1f11373 | |
parent | b19852b6e76c5e0e9ed93ab7798d25f761e16eca (diff) | |
download | qutebrowser-ebdfa0be733bace5ef0af2d95451bf2135bb2edb.tar.gz qutebrowser-ebdfa0be733bace5ef0af2d95451bf2135bb2edb.zip |
Add hypothesis tests for configtypes.
See #830.
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | tests/config/test_configtypes_hypothesis.py | 50 | ||||
-rw-r--r-- | tox.ini | 2 |
3 files changed, 53 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore index fc3dd315d..d71a7a16b 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ __pycache__ /testresults.html /.cache /.testmondata +/.hypothesis diff --git a/tests/config/test_configtypes_hypothesis.py b/tests/config/test_configtypes_hypothesis.py new file mode 100644 index 000000000..e214e39e7 --- /dev/null +++ b/tests/config/test_configtypes_hypothesis.py @@ -0,0 +1,50 @@ +# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et: +# Copyright 2015 Florian Bruhin (The Compiler) <mail@qutebrowser.org> + +# This file is part of qutebrowser. +# +# qutebrowser is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# qutebrowser is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with qutebrowser. If not, see <http://www.gnu.org/licenses/>. + +"""Hypothesis tests for qutebrowser.config.configtypes.""" + +import inspect +import functools + +import pytest +import hypothesis +from hypothesis import strategies + +from qutebrowser.config import configtypes, configexc + + +def gen_classes(): + for name, member in inspect.getmembers(configtypes, inspect.isclass): + if member is configtypes.BaseType: + pass + elif member is configtypes.MappingType: + pass + elif member is configtypes.FormatString: + yield functools.partial(member, fields=['a', 'b']) + elif issubclass(member, configtypes.BaseType): + yield member + + +@pytest.mark.parametrize('klass', gen_classes()) +@hypothesis.given(strategies.text()) +@hypothesis.example('\x00') +def test_configtypes_hypothesis(klass, s): + try: + klass().validate(s) + except configexc.ValidationError: + pass @@ -27,6 +27,8 @@ deps = pytest-qt==1.5.0 pytest-mock==0.7.0 pytest-html==1.3.1 + hypothesis==1.8.4 + hypothesis-pytest==0.13.0 commands = {envpython} scripts/link_pyqt.py --tox {envdir} {envpython} -m py.test --strict -rfEsw {posargs:tests} |