Carry only the code, tests, and user-facing docs that matter to end users; drop the modernization scaffolding accumulated while building it. - Remove the bench harness, results, and environment captures (bench/). - Remove internal docs and research spikes (docs/). - Remove the Makefile; tests run via uv / pytest directly. - Strip the bench harness and quantization-matrix steps from the Tier 2 workflow. The golden-image test drives conversion through the Core ML Converter node at runtime, so no separate convert step is needed. - Replace phase/handoff annotations across code, tests, and config with neutral docstrings and comments.
73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
"""Pytest bootstrap for ComfyUI-CoreMLSuite tests.
|
|
|
|
- Adds the ComfyUI checkout to sys.path so the framework-coupled modules
|
|
that transitively import `comfy.*` resolve when pytest is invoked from
|
|
this package's root.
|
|
- Auto-applies tier markers based on the directory a test lives in, so
|
|
individual files don't have to repeat @pytest.mark.unit / .m2.
|
|
- Skips in-progress test scaffolds so they don't break collection (they
|
|
reference modules / venv layouts that aren't part of this suite).
|
|
"""
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parents[1]
|
|
COMFY_DIR = REPO_ROOT.parents[1]
|
|
|
|
for p in (str(COMFY_DIR), str(REPO_ROOT)):
|
|
if p not in sys.path:
|
|
sys.path.insert(0, p)
|
|
|
|
|
|
# Skip WIP test scaffolds; they import modules (coreml_suite.experiments,
|
|
# convert_apple) that are not part of this suite.
|
|
collect_ignore_glob = [
|
|
"unit/test_experiments.py",
|
|
"unit/test_unet_conversion.py",
|
|
"unit/standalone_test.py",
|
|
]
|
|
|
|
|
|
_TIER_BY_DIR = {
|
|
"tests/unit": "unit",
|
|
"tests/m2": "m2",
|
|
"tests/integration": "m2",
|
|
"tests/smoke": "smoke",
|
|
}
|
|
|
|
# When the user asks for a single tier (-m unit / -m m2), skip the other
|
|
# directories at collection time. Tier-0 cannot afford to import tests/m2
|
|
# files because they pull in PIL + ComfyUI runtime which Linux CI won't have.
|
|
_TIER_DIRS = {
|
|
"unit": ("/tests/unit/",),
|
|
"m2": ("/tests/m2/", "/tests/integration/"),
|
|
"smoke": ("/tests/smoke/",),
|
|
}
|
|
|
|
|
|
def pytest_ignore_collect(collection_path, config):
|
|
expr = config.option.markexpr
|
|
if expr not in _TIER_DIRS:
|
|
return None
|
|
allowed = _TIER_DIRS[expr]
|
|
rel = str(collection_path).replace("\\", "/")
|
|
if "/tests/" not in rel:
|
|
return None
|
|
# Always allow tests/ root + the tier's own dirs.
|
|
if rel.endswith("/tests"):
|
|
return None
|
|
if any(frag in rel + "/" for frag in allowed):
|
|
return None
|
|
return True
|
|
|
|
|
|
def pytest_collection_modifyitems(config, items):
|
|
for item in items:
|
|
path = str(item.fspath).replace("\\", "/")
|
|
for fragment, marker in _TIER_BY_DIR.items():
|
|
if f"/{fragment}/" in path:
|
|
item.add_marker(getattr(pytest.mark, marker))
|
|
break
|