diff --git a/scripts/dev/check_coverage.py b/scripts/dev/check_coverage.py index 0e79a6e02..09702eac4 100644 --- a/scripts/dev/check_coverage.py +++ b/scripts/dev/check_coverage.py @@ -173,6 +173,8 @@ PERFECT_FILES = [ 'completion/models/util.py'), ('tests/unit/completion/test_models.py', 'completion/models/urlmodel.py'), + ('tests/unit/completion/test_models.py', + 'completion/models/configmodel.py'), ('tests/unit/completion/test_histcategory.py', 'completion/models/histcategory.py'), ('tests/unit/completion/test_listcategory.py', diff --git a/tests/unit/completion/test_models.py b/tests/unit/completion/test_models.py index 32e6920fe..9e355289f 100644 --- a/tests/unit/completion/test_models.py +++ b/tests/unit/completion/test_models.py @@ -28,7 +28,7 @@ from PyQt5.QtCore import QUrl from qutebrowser.completion import completer from qutebrowser.completion.models import miscmodels, urlmodel, configmodel from qutebrowser.config import configdata, configtypes -from qutebrowser.utils import objreg +from qutebrowser.utils import objreg, usertypes from qutebrowser.browser import history from qutebrowser.commands import cmdutils @@ -91,7 +91,8 @@ def configdata_stub(config_stub, monkeypatch, configdata_init): valtype=configtypes.Command(), ), default={'q': 'quit'}, - backends=[], + backends=[usertypes.Backend.QtWebKit, + usertypes.Backend.QtWebEngine], raw_backends=None)), ('bindings.default', configdata.Option( name='bindings.default', @@ -131,6 +132,13 @@ def configdata_stub(config_stub, monkeypatch, configdata_init): }, backends=[], raw_backends=None)), + ('content.javascript.enabled', configdata.Option( + name='content.javascript.enabled', + description='Enable/Disable JavaScript', + typ=configtypes.Bool(), + default=True, + backends=[], + raw_backends=None)), ])) config_stub._init_values() @@ -248,6 +256,7 @@ def test_help_completion(qtmodeltester, cmdutils_stub, key_config_stub, ('aliases', 'Aliases for commands.', None), ('bindings.commands', 'Default keybindings', None), ('bindings.default', 'Default keybindings', None), + ('content.javascript.enabled', 'Enable/Disable JavaScript', None), ] }) @@ -648,10 +657,66 @@ def test_setting_option_completion(qtmodeltester, config_stub, '"I": "invalid", "d": "scroll down"}}')), ('bindings.default', 'Default keybindings', '{"normal": {"": "quit", "d": "tab-close"}}'), + ('content.javascript.enabled', 'Enable/Disable JavaScript', + 'true'), ] }) +def test_setting_customized_option_completion(qtmodeltester, config_stub, + configdata_stub, info): + info.config.set_obj('aliases', {'foo': 'nop'}) + + model = configmodel.customized_option(info=info) + model.set_pattern('') + qtmodeltester.data_display_may_return_none = True + qtmodeltester.check(model) + + _check_completions(model, { + "Customized options": [ + ('aliases', 'Aliases for commands.', '{"foo": "nop"}'), + ] + }) + + +def test_setting_value_completion(qtmodeltester, config_stub, configdata_stub, + info): + model = configmodel.value(optname='content.javascript.enabled', info=info) + model.set_pattern('') + qtmodeltester.data_display_may_return_none = True + qtmodeltester.check(model) + + _check_completions(model, { + "Current/Default": [ + ('true', 'Current value', None), + ('true', 'Default value', None), + ], + "Completions": [ + ('false', '', None), + ('true', '', None), + ], + }) + + +def test_setting_value_no_completions(qtmodeltester, config_stub, + configdata_stub, info): + model = configmodel.value(optname='aliases', info=info) + model.set_pattern('') + qtmodeltester.data_display_may_return_none = True + qtmodeltester.check(model) + + _check_completions(model, { + "Current/Default": [ + ('{"q": "quit"}', 'Current value', None), + ('{"q": "quit"}', 'Default value', None), + ], + }) + + +def test_setting_value_completion_invalid(info): + assert configmodel.value(optname='foobarbaz', info=info) is None + + def test_bind_completion(qtmodeltester, cmdutils_stub, config_stub, key_config_stub, configdata_stub, info): """Test the results of keybinding command completion.