You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up to epic #2424 / #2390. Cluster 16 of 16, the closing PR set. Depends on every prior cluster issue landing, because the uncategorised tail is sensitive to where the rest of the suite ended up.
Likely 2-3 PRs: features / tiers, golden-corpus relocation, uncategorised + final lint pass.
Scope
The remaining residue after the 15 cluster issues land. Three sub-clusters plus a final audit.
Files to consolidate (26 plus the final lint)
Sub-PR A: features / tiers (4) -> release_gates/
test_features.py
test_supported_features_shape_2348.py
test_supported_features_tiers_2137.py
test_unsupported_features_2349.py
Rename and fold into release_gates/test_features.py. The shape / tiers tests check the SUPPORTED_FEATURES constant; this is the release-contract surface, so it belongs alongside release_gates/test_stable_features.py.
Move into xrspatial/geotiff/tests/golden_corpus/. The corpus oracle (_oracle.py) and marks (_marks.py) already live there; the consumers should too. This is a relocation, not a consolidation: each file keeps its identity (one per backend / concern). Rename to drop the _1930 suffix. Update any release-gate citations in docs/source/reference/release_gate_geotiff.rst.
These cross-cut and may genuinely belong at the top level. Recommendation: leave at the top level. Pulling them under a misc/ directory adds depth without clarity.
test_edge_cases.py
test_fuzz_hypothesis_1661.py
test_polish_1488.py
test_round_trip_invariants.py
test_roundtrip_properties.py
test_security.py
test_namespace_no_leak_1708.py
Sub-PR E: final audit and lint
Confirm find xrspatial/geotiff/tests -name 'test_*.py' | wc -l lands between 60 and 80.
Confirm find xrspatial/geotiff/tests -maxdepth 1 -name 'test_*.py' | wc -l is at most 5 (only the cross-cutting invariants from Sub-PR D, if kept).
Confirm no filename matches test_*_[0-9]{4,}.py.
Final lint pass on every file touched across the epic.
Follow-up to epic #2424 / #2390. Cluster 16 of 16, the closing PR set. Depends on every prior cluster issue landing, because the uncategorised tail is sensitive to where the rest of the suite ended up.
Likely 2-3 PRs: features / tiers, golden-corpus relocation, uncategorised + final lint pass.
Scope
The remaining residue after the 15 cluster issues land. Three sub-clusters plus a final audit.
Files to consolidate (26 plus the final lint)
Sub-PR A: features / tiers (4) ->
release_gates/test_features.pytest_supported_features_shape_2348.pytest_supported_features_tiers_2137.pytest_unsupported_features_2349.pyRename and fold into
release_gates/test_features.py. The shape / tiers tests check theSUPPORTED_FEATURESconstant; this is the release-contract surface, so it belongs alongsiderelease_gates/test_stable_features.py.Sub-PR B: golden-corpus relocation (11) ->
golden_corpus/test_golden_corpus_compression_1930.pytest_golden_corpus_dask_gpu_1930.pytest_golden_corpus_dask_numpy_1930.pytest_golden_corpus_dtype_variants_1930.pytest_golden_corpus_eager_numpy_1930.pytest_golden_corpus_fsspec_1930.pytest_golden_corpus_http_1930.pytest_golden_corpus_layout_endian_1930.pytest_golden_corpus_manifest_1930.pytest_golden_corpus_metadata_tags_1930.pytest_golden_corpus_overview_cog_1930.pytest_golden_corpus_vrt_1930.pyMove into
xrspatial/geotiff/tests/golden_corpus/. The corpus oracle (_oracle.py) and marks (_marks.py) already live there; the consumers should too. This is a relocation, not a consolidation: each file keeps its identity (one per backend / concern). Rename to drop the_1930suffix. Update any release-gate citations indocs/source/reference/release_gate_geotiff.rst.Sub-PR C: uncategorised tail (11) -> individual decisions
Read each file before placing; many fit in existing homes.
test_accuracy_1081.pytest_assemble_layout_no_bytes_copy_1756.pytest_bytesio_source.pytest_eager_source_close_on_error_2322.pytest_finalization_helpers_2162.pytest_orientation.pytest_remaining_fail_closed_1987.pytest_runtime_sentinels_identity_1880.pytest_streaming_codecs_2026_05_11.pytest_streaming_photometric_override_2073.pytest_strict_mode_1662.pySuggested placements (verify by reading each file):
test_accuracy_1081.py->read/test_basic.py(numerical accuracy on round-trip).test_assemble_layout_no_bytes_copy_1756.py->read/test_tiling.py(assembly perf invariant).test_bytesio_source.py->read/test_basic.py(input-source variant).test_eager_source_close_on_error_2322.py->read/test_basic.py(lifecycle on read error).test_finalization_helpers_2162.py->parity/test_backend_matrix.py(finalization helpers).test_orientation.py->read/test_basic.pyorread/test_georef.py(CPU orientation;test_orientation_gpu.pyalready in GPU cluster).test_remaining_fail_closed_1987.py-> wherever the other_1987fail-closed tests landed.test_runtime_sentinels_identity_1880.py->unit/test_metadata.py.test_streaming_codecs_2026_05_11.py->write/test_streaming.py.test_streaming_photometric_override_2073.py->write/test_basic.py.test_strict_mode_1662.py->unit/test_signatures.py(env-var validation).Sub-PR D: cross-cutting invariants (optional)
These cross-cut and may genuinely belong at the top level. Recommendation: leave at the top level. Pulling them under a
misc/directory adds depth without clarity.test_edge_cases.pytest_fuzz_hypothesis_1661.pytest_polish_1488.pytest_round_trip_invariants.pytest_roundtrip_properties.pytest_security.pytest_namespace_no_leak_1708.pySub-PR E: final audit and lint
find xrspatial/geotiff/tests -name 'test_*.py' | wc -llands between 60 and 80.find xrspatial/geotiff/tests -maxdepth 1 -name 'test_*.py' | wc -lis at most 5 (only the cross-cutting invariants from Sub-PR D, if kept).test_*_[0-9]{4,}.py.Constraints
_helpers/markers.py;make_minimal_tifffrom_helpers/tiff_builders.py.CLUSTER_AUDIT_CLOSE.mddeleted before merge of each sub-PR.Verification