forked from genewildish/Mainline
- Add engine/pipeline/ module with Stage ABC, PipelineContext, PipelineParams - Stage provides unified interface for sources, effects, displays, cameras - Pipeline class handles DAG-based execution with dependency resolution - PipelinePreset for pre-configured pipelines (demo, poetry, pipeline, etc.) - Add PipelineParams as params layer for animation-driven config - Add StageRegistry for unified stage registration - Add sources_v2.py with DataSource.is_dynamic property - Add animation.py with Preset and AnimationController - Skip ntfy integration tests by default (require -m integration) - Skip e2e tests by default (require -m e2e) - Update pipeline.py with comprehensive introspection methods
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
"""
|
|
Pytest configuration for mainline.
|
|
"""
|
|
|
|
import pytest
|
|
|
|
|
|
def pytest_configure(config):
|
|
"""Configure pytest to skip integration tests by default."""
|
|
config.addinivalue_line(
|
|
"markers",
|
|
"integration: marks tests as integration tests (require external services)",
|
|
)
|
|
config.addinivalue_line("markers", "ntfy: marks tests that require ntfy service")
|
|
|
|
|
|
def pytest_collection_modifyitems(config, items):
|
|
"""Skip integration/e2e tests unless explicitly requested with -m."""
|
|
# Get the current marker expression
|
|
marker_expr = config.getoption("-m", default="")
|
|
|
|
# If explicitly running integration or e2e, don't skip them
|
|
if marker_expr in ("integration", "e2e", "integration or e2e"):
|
|
return
|
|
|
|
# Skip integration tests
|
|
skip_integration = pytest.mark.skip(reason="need -m integration to run")
|
|
for item in items:
|
|
if "integration" in item.keywords:
|
|
item.add_marker(skip_integration)
|
|
|
|
# Skip e2e tests by default (they require browser/display)
|
|
skip_e2e = pytest.mark.skip(reason="need -m e2e to run")
|
|
for item in items:
|
|
if "e2e" in item.keywords and "integration" not in item.keywords:
|
|
item.add_marker(skip_e2e)
|