diff --git a/tests/helpers/stubs.py b/tests/helpers/stubs.py index ffc8349b0..6998958b8 100644 --- a/tests/helpers/stubs.py +++ b/tests/helpers/stubs.py @@ -30,7 +30,7 @@ import builtins import importlib import types -from PyQt5.QtCore import pyqtSignal, QPoint, QProcess, QObject, QUrl +from PyQt5.QtCore import pyqtSignal, QPoint, QProcess, QObject, QUrl, QByteArray from PyQt5.QtGui import QIcon from PyQt5.QtNetwork import (QNetworkRequest, QAbstractNetworkCache, QNetworkCacheMetaData) @@ -193,13 +193,18 @@ class FakeNetworkReply: self.headers[key] = value -def fake_qprocess(): - """Factory for a QProcess mock which has the QProcess enum values.""" - m = mock.Mock(spec=QProcess) - for name in ['NormalExit', 'CrashExit', 'FailedToStart', 'Crashed', - 'Timedout', 'WriteError', 'ReadError', 'UnknownError']: - setattr(m, name, getattr(QProcess, name)) - return m +class FakeProcess(QProcess): + + def __init__(self, parent: QObject = None) -> None: + super().__init__(parent) + self.start = mock.Mock(spec=QProcess.start) + self.startDetached = mock.Mock(spec=QProcess.startDetached) + self.readAllStandardOutput = mock.Mock( + spec=QProcess.readAllStandardOutput, return_value=QByteArray(b'')) + self.readAllStandardError = mock.Mock( + spec=QProcess.readAllStandardError, return_value=QByteArray(b'')) + self.terminate = mock.Mock(spec=QProcess.terminate) + self.kill = mock.Mock(spec=QProcess.kill) class FakeWebTabScroller(browsertab.AbstractScroller): diff --git a/tests/unit/misc/test_guiprocess.py b/tests/unit/misc/test_guiprocess.py index d8cda7dd1..f649fbe42 100644 --- a/tests/unit/misc/test_guiprocess.py +++ b/tests/unit/misc/test_guiprocess.py @@ -49,7 +49,7 @@ def proc(qtbot, caplog): def fake_proc(monkeypatch, stubs): """A fixture providing a GUIProcess with a mocked QProcess.""" p = guiprocess.GUIProcess('testprocess') - monkeypatch.setattr(p, '_proc', stubs.fake_qprocess()) + monkeypatch.setattr(p, '_proc', stubs.FakeProcess()) return p