summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qutebrowser/browser/commands.py10
-rw-r--r--qutebrowser/browser/qutescheme.py8
-rw-r--r--qutebrowser/commands/userscripts.py12
-rw-r--r--qutebrowser/misc/guiprocess.py2
-rwxr-xr-xscripts/dev/run_vulture.py1
-rw-r--r--tests/unit/misc/test_guiprocess.py16
6 files changed, 15 insertions, 34 deletions
diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py
index 527d90184..eb9f17e8f 100644
--- a/qutebrowser/browser/commands.py
+++ b/qutebrowser/browser/commands.py
@@ -1077,19 +1077,19 @@ class CommandDispatcher:
log.procs.debug("Executing {} with args {}, userscript={}".format(
cmd, args, userscript))
- @pyqtSlot()
- def _on_proc_finished():
+ def _on_proc_finished(proc):
if output:
tb = objreg.get('tabbed-browser', scope='window',
window='last-focused')
- tb.load_url(QUrl('qute://spawn-output'), newtab=True)
+ tb.load_url(QUrl(f'qute://process/{proc.pid}'), newtab=True)
if userscript:
def _selection_callback(s):
try:
runner = self._run_userscript(
s, cmd, args, verbose, output_messages, count)
- runner.finished.connect(_on_proc_finished)
+ runner.finished.connect(functools.partial(
+ _on_proc_finished, runner.proc))
except cmdutils.CommandError as e:
message.error(str(e))
@@ -1112,7 +1112,7 @@ class CommandDispatcher:
"detailed error")
else:
proc.start(cmd, args)
- proc.finished.connect(_on_proc_finished)
+ proc.finished.connect(functools.partial(_on_proc_finished, proc))
def _run_userscript(self, selection, cmd, args, verbose, output_messages,
count):
diff --git a/qutebrowser/browser/qutescheme.py b/qutebrowser/browser/qutescheme.py
index 07f38c46d..c894cc4d7 100644
--- a/qutebrowser/browser/qutescheme.py
+++ b/qutebrowser/browser/qutescheme.py
@@ -46,7 +46,6 @@ from qutebrowser.qt import sip
pyeval_output = ":pyeval was never called"
-spawn_output = ":spawn was never called"
csrf_token = None
@@ -284,13 +283,6 @@ def qute_pyeval(_url: QUrl) -> _HandlerRet:
return 'text/html', src
-@add_handler('spawn-output')
-def qute_spawn_output(_url: QUrl) -> _HandlerRet:
- """Handler for qute://spawn-output."""
- src = jinja.render('pre.html', title='spawn output', content=spawn_output)
- return 'text/html', src
-
-
@add_handler('process')
def qute_process(url: QUrl) -> _HandlerRet:
"""Handler for qute://process."""
diff --git a/qutebrowser/commands/userscripts.py b/qutebrowser/commands/userscripts.py
index 2ab29a2fd..f74d3ef59 100644
--- a/qutebrowser/commands/userscripts.py
+++ b/qutebrowser/commands/userscripts.py
@@ -117,7 +117,7 @@ class _BaseUserscriptRunner(QObject):
super().__init__(parent)
self._cleaned_up = False
self._filepath = None
- self._proc = None
+ self.proc = None
self._env: MutableMapping[str, str] = {}
self._text_stored = False
self._html_stored = False
@@ -168,12 +168,12 @@ class _BaseUserscriptRunner(QObject):
if env is not None:
self._env.update(env)
- self._proc = guiprocess.GUIProcess(
+ self.proc = guiprocess.GUIProcess(
'userscript', additional_env=self._env,
output_messages=output_messages, verbose=verbose, parent=self)
- self._proc.finished.connect(self.on_proc_finished)
- self._proc.error.connect(self.on_proc_error)
- self._proc.start(cmd, args)
+ self.proc.finished.connect(self.on_proc_finished)
+ self.proc.error.connect(self.on_proc_error)
+ self.proc.start(cmd, args)
def _cleanup(self):
"""Clean up temporary files."""
@@ -199,7 +199,7 @@ class _BaseUserscriptRunner(QObject):
fn, e))
self._filepath = None
- self._proc = None
+ self.proc = None
self._env = {}
self._text_stored = False
self._html_stored = False
diff --git a/qutebrowser/misc/guiprocess.py b/qutebrowser/misc/guiprocess.py
index 6b1c369ac..765321bc8 100644
--- a/qutebrowser/misc/guiprocess.py
+++ b/qutebrowser/misc/guiprocess.py
@@ -201,8 +201,6 @@ class GUIProcess(QObject):
if self.stderr:
log.procs.error("Process stderr:\n" + self.stderr.strip())
- qutescheme.spawn_output = self._spawn_format(exitinfo, self.stdout, self.stderr)
-
def _spawn_format(self, exitinfo, stdout, stderr):
"""Produce a formatted string for spawn output."""
stdout = (stdout or "(No output)").strip()
diff --git a/scripts/dev/run_vulture.py b/scripts/dev/run_vulture.py
index d2b551689..1f0018488 100755
--- a/scripts/dev/run_vulture.py
+++ b/scripts/dev/run_vulture.py
@@ -80,7 +80,6 @@ def whitelist_generator(): # noqa: C901
yield 'qutebrowser.utils.jinja.Loader.get_source'
yield 'qutebrowser.utils.log.QtWarningFilter.filter'
yield 'qutebrowser.browser.pdfjs.is_available'
- yield 'qutebrowser.misc.guiprocess.spawn_output'
yield 'qutebrowser.utils.usertypes.ExitStatus.reserved'
yield 'QEvent.posted'
yield 'log_stack' # from message.py
diff --git a/tests/unit/misc/test_guiprocess.py b/tests/unit/misc/test_guiprocess.py
index 178ac3d12..4d38c530d 100644
--- a/tests/unit/misc/test_guiprocess.py
+++ b/tests/unit/misc/test_guiprocess.py
@@ -59,10 +59,7 @@ def test_start(proc, qtbot, message_mock, py_proc):
argv = py_proc("import sys; print('test'); sys.exit(0)")
proc.start(*argv)
- expected = proc._spawn_format(exitinfo="Testprocess exited successfully.",
- stdout="test", stderr="")
assert not message_mock.messages
- assert qutescheme.spawn_output == expected
assert proc.exit_status() == QProcess.NormalExit
@@ -75,14 +72,11 @@ def test_start_verbose(proc, qtbot, message_mock, py_proc):
argv = py_proc("import sys; print('test'); sys.exit(0)")
proc.start(*argv)
- expected = proc._spawn_format(exitinfo="Testprocess exited successfully.",
- stdout="test", stderr="")
msgs = message_mock.messages
assert msgs[0].level == usertypes.MessageLevel.info
assert msgs[1].level == usertypes.MessageLevel.info
assert msgs[0].text.startswith("Executing:")
assert msgs[1].text == "Testprocess exited successfully."
- assert qutescheme.spawn_output == expected
@pytest.mark.parametrize('stdout', [True, False])
@@ -153,9 +147,8 @@ def test_start_env(monkeypatch, qtbot, py_proc):
order='strict'):
proc.start(*argv)
- data = qutescheme.spawn_output
- assert 'QUTEBROWSER_TEST_1' in data
- assert 'QUTEBROWSER_TEST_2' in data
+ assert 'QUTEBROWSER_TEST_1' in proc.stdout
+ assert 'QUTEBROWSER_TEST_2' in proc.stdout
def test_start_detached(fake_proc):
@@ -299,7 +292,6 @@ def test_stdout_not_decodable(proc, qtbot, message_mock, py_proc):
sys.exit(0)
""")
proc.start(*argv)
- expected = proc._spawn_format(exitinfo="Testprocess exited successfully.",
- stdout="A\ufffdB", stderr="")
+
assert not message_mock.messages
- assert qutescheme.spawn_output == expected
+ assert proc.stdout == "A\ufffdB"