Make UI tests work without X server.

looper
Ben Niemann 6 years ago
parent a7a152f002
commit ab6b9659d2

@ -40,6 +40,10 @@ sys.path.insert(0, LIBDIR)
os.environ['LD_LIBRARY_PATH'] = os.path.join(os.getenv('VIRTUAL_ENV'), 'lib')
# Ensure all tests work without X.
os.environ.pop('DISPLAY', None)
def bool_arg(value):
if isinstance(value, bool):
return value

@ -117,10 +117,8 @@ class InstrumentDBClient(instrument_db.InstrumentDBClientMixin, InstrumentDBClie
pass
class BaseEditorApp(QtWidgets.QApplication):
def __init__(self, process, runtime_settings, settings=None):
super().__init__(['noisicaä'])
class BaseEditorApp(object):
def __init__(self, *, process, runtime_settings, settings=None):
self.process = process
self.runtime_settings = runtime_settings
@ -132,10 +130,6 @@ class BaseEditorApp(QtWidgets.QApplication):
self.settings = settings
self.dumpSettings()
self.setQuitOnLastWindowClosed(False)
self.default_style = None
self.project_registry = None
self.sequencer = None
self.midi_hub = None
@ -147,13 +141,6 @@ class BaseEditorApp(QtWidgets.QApplication):
self.__clipboard = None
async def setup(self):
self.default_style = self.style().objectName()
style_name = self.settings.value('appearance/qtStyle', '')
if style_name:
style = QtWidgets.QStyleFactory.create(style_name)
self.setStyle(style)
await self.createNodeDB()
await self.createInstrumentDB()
@ -291,9 +278,10 @@ class BaseEditorApp(QtWidgets.QApplication):
return self.__clipboard
class EditorApp(BaseEditorApp):
def __init__(self, process, runtime_settings, paths, settings=None):
super().__init__(process, runtime_settings, settings)
class EditorApp(BaseEditorApp, QtWidgets.QApplication):
def __init__(self, *, paths, **kwargs):
QtWidgets.QApplication.__init__(self, ['noisicaä'])
BaseEditorApp.__init__(self, **kwargs)
self.paths = paths
@ -302,6 +290,9 @@ class EditorApp(BaseEditorApp):
self.pipeline_perf_monitor = None
self.pipeline_graph_monitor = None
self.stat_monitor = None
self.default_style = None
self.setQuitOnLastWindowClosed(False)
async def setup(self):
logger.info("Installing custom excepthook.")
@ -310,6 +301,13 @@ class EditorApp(BaseEditorApp):
await super().setup()
self.default_style = self.style().objectName()
style_name = self.settings.value('appearance/qtStyle', '')
if style_name:
style = QtWidgets.QStyleFactory.create(style_name)
self.setStyle(style)
logger.info("Creating PipelinePerfMonitor.")
self.pipeline_perf_monitor = pipeline_perf_monitor.PipelinePerfMonitor(self)

@ -38,10 +38,13 @@ class UISubprocess(core.SubprocessMixin, core.ProcessBase):
def __init__(self, *, runtime_settings, paths, **kwargs):
super().__init__(**kwargs)
self.app = self.create_app(self, runtime_settings, paths)
self.app = self.create_app(
process=self,
runtime_settings=runtime_settings,
paths=paths)
def create_app(self, *args, **kwargs):
return editor_app.EditorApp(*args, **kwargs)
def create_app(self, **kwargs):
return editor_app.EditorApp(**kwargs)
def create_event_loop(self):
return quamash.QEventLoop(self.app)

@ -28,6 +28,7 @@ from unittest import mock
import asynctest
from PyQt5.QtCore import Qt
from PyQt5 import QtCore
from PyQt5 import QtGui
from noisicaa import core
@ -168,10 +169,11 @@ class MockProcess(core.ProcessBase):
self.project = None
class MockApp(BaseEditorApp):
class MockApp(BaseEditorApp, QtCore.QCoreApplication):
def __init__(self):
super().__init__(None, RuntimeSettings(), MockSettings())
self.process = None
QtCore.QCoreApplication.__init__(self, ['noisicaä-test'])
BaseEditorApp.__init__(
self, process=None, runtime_settings=RuntimeSettings(), settings=MockSettings())
def createSequencer(self):
return MockSequencer()

Loading…
Cancel
Save