Merge branch 'pkill-nine-upstream-master-jseval-file'

This commit is contained in:
Florian Bruhin 2017-02-25 17:26:59 +01:00
commit b5d4de17a7
5 changed files with 27 additions and 5 deletions

View File

@ -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

View File

@ -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.

View File

@ -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)

View File

@ -0,0 +1,2 @@
console.log("Hello from JS!")
console.log("Hello again from JS!")

View File

@ -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