test: add MainWindow structure smoke test (skips headless)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,2 +1,6 @@
|
|||||||
import sys, os
|
import sys, os
|
||||||
sys.path.insert(0, os.path.dirname(__file__))
|
sys.path.insert(0, os.path.dirname(__file__))
|
||||||
|
|
||||||
|
|
||||||
|
def pytest_configure(config):
|
||||||
|
config.addinivalue_line("markers", "gui: constructs Qt widgets; needs a display")
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
import os
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
# A real platform is needed because MpvWidget creates a GL context.
|
||||||
|
# If construction fails for any environment reason, skip — this test is a
|
||||||
|
# best-effort structural net, not a gate on core/ tests.
|
||||||
|
pytestmark = pytest.mark.gui
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="module")
|
||||||
|
def app():
|
||||||
|
from PyQt6.QtWidgets import QApplication
|
||||||
|
inst = QApplication.instance() or QApplication([])
|
||||||
|
yield inst
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def win(app):
|
||||||
|
try:
|
||||||
|
from main import MainWindow
|
||||||
|
w = MainWindow()
|
||||||
|
except Exception as e: # GL/mpv/display unavailable, etc.
|
||||||
|
pytest.skip(f"MainWindow could not be constructed here: {e}")
|
||||||
|
yield w
|
||||||
|
w.close()
|
||||||
|
w.deleteLater()
|
||||||
|
|
||||||
|
|
||||||
|
def _descendant_object_names(widget):
|
||||||
|
"""All objectNames in a widget's child tree (for containment asserts)."""
|
||||||
|
return {c.objectName() for c in widget.findChildren(object) if c.objectName()}
|
||||||
|
|
||||||
|
|
||||||
|
def test_window_constructs(win):
|
||||||
|
assert win.windowTitle() == "8-cut"
|
||||||
Reference in New Issue
Block a user