Skip to content

Consolidation cluster 16: features / golden-corpus relocation / uncategorised tail + final close (long-tail epic #2424) #2440

@brendancol

Description

@brendancol

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.

Sub-PR B: golden-corpus relocation (11) -> golden_corpus/

  • test_golden_corpus_compression_1930.py
  • test_golden_corpus_dask_gpu_1930.py
  • test_golden_corpus_dask_numpy_1930.py
  • test_golden_corpus_dtype_variants_1930.py
  • test_golden_corpus_eager_numpy_1930.py
  • test_golden_corpus_fsspec_1930.py
  • test_golden_corpus_http_1930.py
  • test_golden_corpus_layout_endian_1930.py
  • test_golden_corpus_manifest_1930.py
  • test_golden_corpus_metadata_tags_1930.py
  • test_golden_corpus_overview_cog_1930.py
  • test_golden_corpus_vrt_1930.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.

Sub-PR C: uncategorised tail (11) -> individual decisions

Read each file before placing; many fit in existing homes.

  • test_accuracy_1081.py
  • test_assemble_layout_no_bytes_copy_1756.py
  • test_bytesio_source.py
  • test_eager_source_close_on_error_2322.py
  • test_finalization_helpers_2162.py
  • test_orientation.py
  • test_remaining_fail_closed_1987.py
  • test_runtime_sentinels_identity_1880.py
  • test_streaming_codecs_2026_05_11.py
  • test_streaming_photometric_override_2073.py
  • test_strict_mode_1662.py

Suggested 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.py or read/test_georef.py (CPU orientation; test_orientation_gpu.py already in GPU cluster).
  • test_remaining_fail_closed_1987.py -> wherever the other _1987 fail-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.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.
  • Close epic Epic: Consolidate the GeoTIFF test long tail (follow-up to #2390) #2424.

Constraints

  • Tests-only.
  • Markers from _helpers/markers.py; make_minimal_tiff from _helpers/tiff_builders.py.
  • Descriptive IDs. No issue numbers.
  • CLUSTER_AUDIT_CLOSE.md deleted before merge of each sub-PR.

Verification

pytest xrspatial/geotiff/tests/ -x -q
find xrspatial/geotiff/tests -name 'test_*.py' | wc -l

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions