Move conformance tests to per-version directories
Conformance tests now live in conformance/<version>/*.py and are checked against the corresponding stubs in dist/<version>/. Auto-detection only runs versions that have both stubs and test files. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
441631d69a
commit
8879d14073
25
main.py
25
main.py
@ -397,7 +397,11 @@ def typecheck_stubs(versions: list[str] | None = None) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def conformance_check(versions: list[str] | None = None) -> None:
|
def conformance_check(versions: list[str] | None = None) -> None:
|
||||||
"""Type-check conformance test files against generated stubs."""
|
"""Type-check conformance test files against generated stubs.
|
||||||
|
|
||||||
|
Each version's tests live in conformance/<version>/*.py and are checked
|
||||||
|
against the corresponding generated stubs in dist/<version>/.
|
||||||
|
"""
|
||||||
dist_dir = SCRIPT_DIR / "dist"
|
dist_dir = SCRIPT_DIR / "dist"
|
||||||
conformance_dir = SCRIPT_DIR / "conformance"
|
conformance_dir = SCRIPT_DIR / "conformance"
|
||||||
|
|
||||||
@ -406,24 +410,29 @@ def conformance_check(versions: list[str] | None = None) -> None:
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if versions:
|
if versions:
|
||||||
missing = [v for v in versions if not (dist_dir / v).is_dir()]
|
missing_stubs = [v for v in versions if not (dist_dir / v).is_dir()]
|
||||||
if missing:
|
if missing_stubs:
|
||||||
print(f"Missing stubs for: {', '.join(missing)}")
|
print(f"Missing stubs for: {', '.join(missing_stubs)}")
|
||||||
|
sys.exit(1)
|
||||||
|
missing_tests = [v for v in versions if not (conformance_dir / v).is_dir()]
|
||||||
|
if missing_tests:
|
||||||
|
print(f"No conformance tests for: {', '.join(missing_tests)}")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
versions = sorted(
|
versions = sorted(
|
||||||
d.name
|
d.name
|
||||||
for d in dist_dir.iterdir()
|
for d in conformance_dir.iterdir()
|
||||||
if d.is_dir() and not d.name.startswith(".")
|
if d.is_dir() and (dist_dir / d.name).is_dir()
|
||||||
)
|
)
|
||||||
|
|
||||||
if not versions:
|
if not versions:
|
||||||
print("No generated stubs found in dist/.")
|
print("No conformance test directories found.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
failed = False
|
failed = False
|
||||||
for version in versions:
|
for version in versions:
|
||||||
version_dir = dist_dir / version
|
version_dir = dist_dir / version
|
||||||
|
test_dir = conformance_dir / version
|
||||||
print(f"=== Conformance check against Blender {version} stubs ===")
|
print(f"=== Conformance check against Blender {version} stubs ===")
|
||||||
|
|
||||||
python_version_file = version_dir / ".python-version"
|
python_version_file = version_dir / ".python-version"
|
||||||
@ -437,7 +446,7 @@ def conformance_check(versions: list[str] | None = None) -> None:
|
|||||||
config.write_text(
|
config.write_text(
|
||||||
json.dumps(
|
json.dumps(
|
||||||
{
|
{
|
||||||
"include": [str(conformance_dir)],
|
"include": [str(test_dir)],
|
||||||
"extraPaths": [str(version_dir)],
|
"extraPaths": [str(version_dir)],
|
||||||
"typeCheckingMode": "strict",
|
"typeCheckingMode": "strict",
|
||||||
"pythonVersion": python_version,
|
"pythonVersion": python_version,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user