7e917d00a6
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
36 lines
972 B
Python
36 lines
972 B
Python
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"
|