summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2017-02-25 17:26:12 +0100
committerFlorian Bruhin <git@the-compiler.org>2017-02-25 17:26:12 +0100
commit1eab10832359fddf5583bc3f418fb25a1525ce23 (patch)
tree5a150859bff322c8cc634a3d406defbf242aa93b
parent3cc32e0b6a983dd8e0bd0fc28e1cea5e337cf08c (diff)
parent6cb48ba2b6f0d688988394b233bc09499893b99a (diff)
downloadqutebrowser-1eab10832359fddf5583bc3f418fb25a1525ce23.tar.gz
qutebrowser-1eab10832359fddf5583bc3f418fb25a1525ce23.zip
Merge branch 'upstream-master-jseval-file' of https://github.com/pkill-nine/qutebrowser into pkill-nine-upstream-master-jseval-file
-rw-r--r--qutebrowser/browser/commands.py12
-rw-r--r--tests/end2end/data/misc/jseval_file.js2
-rw-r--r--tests/end2end/features/misc.feature11
3 files changed, 23 insertions, 2 deletions
diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py
index 5013d6730..34bf0fcf5 100644
--- a/qutebrowser/browser/commands.py
+++ b/qutebrowser/browser/commands.py
@@ -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)
diff --git a/tests/end2end/data/misc/jseval_file.js b/tests/end2end/data/misc/jseval_file.js
new file mode 100644
index 000000000..5f6464ef3
--- /dev/null
+++ b/tests/end2end/data/misc/jseval_file.js
@@ -0,0 +1,2 @@
+console.log("Hello from JS!")
+console.log("Hello again from JS!")
diff --git a/tests/end2end/features/misc.feature b/tests/end2end/features/misc.feature
index 39919ae98..5e13e1feb 100644
--- a/tests/end2end/features/misc.feature
+++ b/tests/end2end/features/misc.feature
@@ -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