Merge branch 'pkill-nine-upstream-master-jseval-file'
This commit is contained in:
commit
b5d4de17a7
@ -231,6 +231,7 @@ Contributors, sorted by the number of commits in descending order:
|
||||
* Ismail
|
||||
* Edgar Hipp
|
||||
* Daryl Finlay
|
||||
* pkill9
|
||||
* arza
|
||||
* adam
|
||||
* Samir Benmendil
|
||||
@ -244,7 +245,6 @@ Contributors, sorted by the number of commits in descending order:
|
||||
* zwarag
|
||||
* xd1le
|
||||
* rmortens
|
||||
* pkill9
|
||||
* oniondreams
|
||||
* issue
|
||||
* haxwithaxe
|
||||
|
@ -465,14 +465,15 @@ Note: Due a bug in Qt, the inspector will show incorrect request headers in the
|
||||
|
||||
[[jseval]]
|
||||
=== jseval
|
||||
Syntax: +:jseval [*--quiet*] [*--world* 'world'] 'js-code'+
|
||||
Syntax: +:jseval [*--file*] [*--quiet*] [*--world* 'world'] 'js-code'+
|
||||
|
||||
Evaluate a JavaScript string.
|
||||
|
||||
==== positional arguments
|
||||
* +'js-code'+: The string to evaluate.
|
||||
* +'js-code'+: The string/file to evaluate.
|
||||
|
||||
==== optional arguments
|
||||
* +*-f*+, +*--file*+: Interpret js-code as a path to a file.
|
||||
* +*-q*+, +*--quiet*+: Don't show resulting JS object.
|
||||
* +*-w*+, +*--world*+: Ignored on QtWebKit. On QtWebEngine, a world ID or name to run the snippet in.
|
||||
|
||||
|
@ -1927,12 +1927,13 @@ class CommandDispatcher:
|
||||
|
||||
@cmdutils.register(instance='command-dispatcher', scope='window',
|
||||
maxsplit=0, no_cmd_split=True)
|
||||
def jseval(self, js_code, quiet=False, *,
|
||||
def jseval(self, js_code, file=False, quiet=False, *,
|
||||
world: typing.Union[usertypes.JsWorld, int]=None):
|
||||
"""Evaluate a JavaScript string.
|
||||
|
||||
Args:
|
||||
js_code: The string to evaluate.
|
||||
js_code: The string/file to evaluate.
|
||||
file: Interpret js-code as a path to a file.
|
||||
quiet: Don't show resulting JS object.
|
||||
world: Ignored on QtWebKit. On QtWebEngine, a world ID or name to
|
||||
run the snippet in.
|
||||
@ -1960,6 +1961,13 @@ class CommandDispatcher:
|
||||
out = out[:5000] + ' [...trimmed...]'
|
||||
message.info(out)
|
||||
|
||||
if file:
|
||||
try:
|
||||
with open(js_code, 'r', encoding='utf-8') as f:
|
||||
js_code = f.read()
|
||||
except OSError as e:
|
||||
raise cmdexc.CommandError(str(e))
|
||||
|
||||
widget = self._current_widget()
|
||||
widget.run_js_async(js_code, callback=jseval_cb, world=world)
|
||||
|
||||
|
2
tests/end2end/data/misc/jseval_file.js
Normal file
2
tests/end2end/data/misc/jseval_file.js
Normal file
@ -0,0 +1,2 @@
|
||||
console.log("Hello from JS!")
|
||||
console.log("Hello again from JS!")
|
@ -102,6 +102,17 @@ Feature: Various utility commands.
|
||||
And I run :jseval --world main do_log()
|
||||
Then the javascript message "Hello from the page!" should be logged
|
||||
|
||||
Scenario: :jseval --file using a file that exists as js-code
|
||||
When I set general -> log-javascript-console to info
|
||||
And I run :jseval --file (testdata)/misc/jseval_file.js
|
||||
Then the javascript message "Hello from JS!" should be logged
|
||||
And the javascript message "Hello again from JS!" should be logged
|
||||
|
||||
Scenario: :jseval --file using a file that doesn't exist as js-code
|
||||
When I run :jseval --file nonexistentfile
|
||||
Then the error "[Errno 2] No such file or directory: 'nonexistentfile'" should be shown
|
||||
And "No output or error" should not be logged
|
||||
|
||||
# :debug-webaction
|
||||
|
||||
Scenario: :debug-webaction with valid value
|
||||
|
Loading…
Reference in New Issue
Block a user