test: add MainWindow structure smoke test (skips headless)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -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