adding tests and improving error messages
This commit is contained in:
parent
0c38cbcbdd
commit
ee9b1f4950
@ -41,6 +41,8 @@ from qutebrowser.misc import editor, guiprocess
|
|||||||
from qutebrowser.completion.models import urlmodel, miscmodels
|
from qutebrowser.completion.models import urlmodel, miscmodels
|
||||||
from qutebrowser.mainwindow import mainwindow
|
from qutebrowser.mainwindow import mainwindow
|
||||||
|
|
||||||
|
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-69904
|
||||||
|
MAX_WORLD_ID = 256 if qtutils.version_check('5.11.2') else 11
|
||||||
|
|
||||||
class CommandDispatcher:
|
class CommandDispatcher:
|
||||||
|
|
||||||
@ -2088,7 +2090,7 @@ class CommandDispatcher:
|
|||||||
try:
|
try:
|
||||||
widget.run_js_async(js_code, callback=jseval_cb, world=world)
|
widget.run_js_async(js_code, callback=jseval_cb, world=world)
|
||||||
except OverflowError:
|
except OverflowError:
|
||||||
raise cmdexc.CommandError("World Id not in valid range")
|
raise cmdexc.CommandError("World ID should be between 0 and " + str(MAX_WORLD_ID))
|
||||||
|
|
||||||
@cmdutils.register(instance='command-dispatcher', scope='window')
|
@cmdutils.register(instance='command-dispatcher', scope='window')
|
||||||
def fake_key(self, keystring, global_=False):
|
def fake_key(self, keystring, global_=False):
|
||||||
|
@ -47,6 +47,10 @@ from qutebrowser.qt import sip
|
|||||||
_qute_scheme_handler = None
|
_qute_scheme_handler = None
|
||||||
|
|
||||||
|
|
||||||
|
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-69904
|
||||||
|
MAX_WORLD_ID = 256 if qtutils.version_check('5.11.2') else 11
|
||||||
|
|
||||||
|
|
||||||
def init():
|
def init():
|
||||||
"""Initialize QtWebEngine-specific modules."""
|
"""Initialize QtWebEngine-specific modules."""
|
||||||
# For some reason we need to keep a reference, otherwise the scheme handler
|
# For some reason we need to keep a reference, otherwise the scheme handler
|
||||||
@ -948,10 +952,11 @@ class _WebEngineScripts(QObject):
|
|||||||
new_script = QWebEngineScript()
|
new_script = QWebEngineScript()
|
||||||
try:
|
try:
|
||||||
world = int(script.jsworld)
|
world = int(script.jsworld)
|
||||||
if not 0 <= world <= 11:
|
if not 0 <= world <= MAX_WORLD_ID:
|
||||||
log.greasemonkey.error(
|
log.greasemonkey.error(
|
||||||
"script {} has invalid value for '@qute-js-world'"
|
"script {} has invalid value for '@qute-js-world'"
|
||||||
": {}".format(script.name, script.jsworld))
|
": {}, should be between 0 and "
|
||||||
|
"{}".format(script.name, script.jsworld, MAX_WORLD_ID))
|
||||||
continue
|
continue
|
||||||
except ValueError:
|
except ValueError:
|
||||||
try:
|
try:
|
||||||
@ -1070,6 +1075,8 @@ class WebEngineTab(browsertab.AbstractTab):
|
|||||||
world_id = QWebEngineScript.ApplicationWorld
|
world_id = QWebEngineScript.ApplicationWorld
|
||||||
elif isinstance(world, int):
|
elif isinstance(world, int):
|
||||||
world_id = world
|
world_id = world
|
||||||
|
if not 0 <= world_id <= MAX_WORLD_ID:
|
||||||
|
raise OverflowError
|
||||||
else:
|
else:
|
||||||
world_id = _JS_WORLD_MAP[world]
|
world_id = _JS_WORLD_MAP[world]
|
||||||
|
|
||||||
|
@ -118,6 +118,26 @@ Feature: Various utility commands.
|
|||||||
Then the javascript message "Hello from the page!" should be logged
|
Then the javascript message "Hello from the page!" should be logged
|
||||||
And "No output or error" should be logged
|
And "No output or error" should be logged
|
||||||
|
|
||||||
|
@qtwebkit_skip @qt>=5.11.2
|
||||||
|
Scenario: :jseval using too high of a world id
|
||||||
|
When I run :jseval --world=257 console.log("Hello from JS!");
|
||||||
|
Then the error "World ID should be between 0 and 256" should be shown
|
||||||
|
|
||||||
|
@qtwebkit_skip @qt<5.11.2
|
||||||
|
Scenario: :jseval using too high of a world id
|
||||||
|
When I run :jseval --world=12 console.log("Hello from JS!");
|
||||||
|
Then the error "World ID should be between 0 and 11" should be shown
|
||||||
|
|
||||||
|
@qtwebkit_skip @qt>=5.11.2
|
||||||
|
Scenario: :jseval using a negative world id
|
||||||
|
When I run :jseval --world=-1 console.log("Hello from JS!");
|
||||||
|
Then the error "World ID should be between 0 and 256" should be shown
|
||||||
|
|
||||||
|
@qtwebkit_skip @qt<5.11.2
|
||||||
|
Scenario: :jseval using a negative world id
|
||||||
|
When I run :jseval --world=-1 console.log("Hello from JS!");
|
||||||
|
Then the error "World ID should be between 0 and 11" should be shown
|
||||||
|
|
||||||
Scenario: :jseval --file using a file that exists as js-code
|
Scenario: :jseval --file using a file that exists as js-code
|
||||||
When I run :jseval --file (testdata)/misc/jseval_file.js
|
When I run :jseval --file (testdata)/misc/jseval_file.js
|
||||||
Then the javascript message "Hello from JS!" should be logged
|
Then the javascript message "Hello from JS!" should be logged
|
||||||
|
Loading…
Reference in New Issue
Block a user