Files
Renderive/render_3D/datoviz/testing/test_package_index_verification.py
T
2026-08-14 01:54:38 +08:00

70 lines
2.6 KiB
Python

"""Tests for package-index wheel verification."""
from pathlib import Path
from tools.release_wheels import index_verify
def _evidence(machine_id: str, *, status: str = 'pass') -> dict:
return {
'schema': index_verify.EVIDENCE_SCHEMA,
'status': status,
'index': 'testpypi',
'version': '0.4.0rc1',
'wheel_run_id': '123',
'artifact_commit': 'artifact',
'machine_id': machine_id,
'artifact_name': f'wheel-{machine_id}',
'canonical_wheel': {'name': f'datoviz-{machine_id}.whl', 'sha256': 'abc'},
'index_wheel': {'name': f'datoviz-{machine_id}.whl', 'sha256': 'abc'},
'identity': {'status': 'pass'},
'installed_smoke': {'status': status},
'failures': [] if status == 'pass' else ['smoke failed'],
}
def test_identity_failures_accepts_byte_identical_wheel(tmp_path: Path) -> None:
"""Index and canonical wheels must have the same name and bytes."""
canonical = tmp_path / 'canonical' / 'datoviz-0.4.0rc1-test.whl'
indexed = tmp_path / 'indexed' / canonical.name
canonical.parent.mkdir()
indexed.parent.mkdir()
canonical.write_bytes(b'same wheel')
indexed.write_bytes(b'same wheel')
assert index_verify.identity_failures(canonical, indexed) == []
def test_identity_failures_rejects_changed_wheel(tmp_path: Path) -> None:
"""An index-side wheel mutation invalidates transferred conformance evidence."""
canonical = tmp_path / 'canonical.whl'
indexed = tmp_path / 'indexed.whl'
canonical.write_bytes(b'canonical')
indexed.write_bytes(b'changed')
failures = index_verify.identity_failures(canonical, indexed)
assert any('filename differs' in failure for failure in failures)
assert any('SHA-256 differs' in failure for failure in failures)
def test_report_requires_every_expected_machine() -> None:
"""A partial native-platform matrix cannot produce a green report."""
report = index_verify.report_payload(
[_evidence('index-linux-x86_64')],
['index-linux-x86_64', 'index-macos-arm64'],
)
assert report['status'] == 'fail'
assert report['missing_machines'] == ['index-macos-arm64']
def test_report_passes_one_consistent_complete_campaign() -> None:
"""Consistent passing evidence produces a green consolidated report."""
machines = ['index-linux-x86_64', 'index-macos-arm64']
report = index_verify.report_payload([_evidence(machine) for machine in machines], machines)
assert report['status'] == 'pass'
assert report['index'] == 'testpypi'
assert report['wheel_run_id'] == '123'