tests: Base FakeProcess on a real QProcess

This way we can e.g. use the finished signal
This commit is contained in:
Florian Bruhin 2021-03-23 10:19:46 +01:00
parent dd767cbcb7
commit 577a653d94
2 changed files with 14 additions and 9 deletions

View File

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

View File

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