|
1 | 1 | from pathlib import Path |
2 | 2 |
|
3 | 3 | from scripts.validate_storefront_claims import ( |
| 4 | + discover_installed_surfaces, |
4 | 5 | discover_public_surfaces, |
5 | 6 | validate, |
6 | 7 | validate_package, |
@@ -34,5 +35,54 @@ def test_rejects_claim_introduced_only_in_installed_wheel(tmp_path: Path) -> Non |
34 | 35 | "Version: 9.9.9\n\n" |
35 | 36 | "https://api.oilpriceapi.com/product-facts.json\n" |
36 | 37 | ) |
| 38 | + (dist_info / "RECORD").write_text( |
| 39 | + "oilpriceapi/version.py,,\n" |
| 40 | + "oilpriceapi/future.py,,\n" |
| 41 | + "oilpriceapi-9.9.9.dist-info/METADATA,,\n" |
| 42 | + "oilpriceapi-9.9.9.dist-info/RECORD,,\n" |
| 43 | + ) |
37 | 44 |
|
38 | 45 | assert any("oilpriceapi/future.py" in failure for failure in validate_package(tmp_path)) |
| 46 | + |
| 47 | + |
| 48 | +def test_rejects_claim_in_future_installed_package_data(tmp_path: Path) -> None: |
| 49 | + package = tmp_path / "oilpriceapi" |
| 50 | + dist_info = tmp_path / "oilpriceapi-9.9.9.dist-info" |
| 51 | + package.mkdir() |
| 52 | + (package / "docs").mkdir() |
| 53 | + (package / "__pycache__").mkdir() |
| 54 | + dist_info.mkdir() |
| 55 | + (package / "version.py").write_text('__version__ = "9.9.9"\n') |
| 56 | + (package / "py.typed").write_text("") |
| 57 | + (package / "types.pyi").write_text('"""Real-time prices."""\n') |
| 58 | + (package / "docs" / "catalog.json").write_text( |
| 59 | + '{"allowance": "1,000 API requests/month"}\n' |
| 60 | + ) |
| 61 | + (package / "__pycache__" / "version.cpython-312.pyc").write_bytes(b"\x00\xff") |
| 62 | + (dist_info / "METADATA").write_text( |
| 63 | + "Metadata-Version: 2.1\n" |
| 64 | + "Name: oilpriceapi\n" |
| 65 | + "Version: 9.9.9\n\n" |
| 66 | + "https://api.oilpriceapi.com/product-facts.json\n" |
| 67 | + ) |
| 68 | + (dist_info / "RECORD").write_text( |
| 69 | + "oilpriceapi/version.py,,\n" |
| 70 | + "oilpriceapi/py.typed,,\n" |
| 71 | + "oilpriceapi/types.pyi,,\n" |
| 72 | + "oilpriceapi/docs/catalog.json,,\n" |
| 73 | + "oilpriceapi/__pycache__/version.cpython-312.pyc,,\n" |
| 74 | + "oilpriceapi-9.9.9.dist-info/METADATA,,\n" |
| 75 | + "oilpriceapi-9.9.9.dist-info/RECORD,,\n" |
| 76 | + ) |
| 77 | + |
| 78 | + surfaces = { |
| 79 | + path.relative_to(tmp_path).as_posix() |
| 80 | + for path in discover_installed_surfaces(tmp_path) |
| 81 | + } |
| 82 | + failures = validate_package(tmp_path) |
| 83 | + |
| 84 | + assert "oilpriceapi/types.pyi" in surfaces |
| 85 | + assert "oilpriceapi/docs/catalog.json" in surfaces |
| 86 | + assert not any("__pycache__" in surface for surface in surfaces) |
| 87 | + assert any("oilpriceapi/types.pyi" in failure for failure in failures) |
| 88 | + assert any("oilpriceapi/docs/catalog.json" in failure for failure in failures) |
0 commit comments