fix(ci): repair integration test suite after v2 SearchResult refactor#66
Merged
chrislyonsKY merged 2 commits intomainfrom Apr 20, 2026
Merged
fix(ci): repair integration test suite after v2 SearchResult refactor#66chrislyonsKY merged 2 commits intomainfrom
chrislyonsKY merged 2 commits intomainfrom
Conversation
The v2.0.0 refactor changed `abovepy.search()` to return a SearchResult workflow object instead of a bare GeoDataFrame, but the integration suite still accessed `.columns` and `.iloc` directly. Route those through SearchResult.tiles (the underlying GeoDataFrame). Also switch test_laz_products to pike_county_bbox. Phase 1 LiDAR was flown county-by-county 2010-2017 and Franklin County (Frankfort) was not in that batch, so the Frankfort fixture cannot return Phase 1 LAZ tiles. Pike County has coverage for all three phases. Fixes 10 of 11 failures in the weekly scheduled integration run on main.
_build_vrt imports `from osgeo import gdal`, which is not bundled with rasterio and not in any optional-dependency group. On systems without the GDAL Python bindings (including the CI integration runner) the import would fail with a bare ModuleNotFoundError. Wrap the import and raise MosaicError with install guidance instead. The `.tif` path through `_merge_tiles` does not need GDAL bindings, so the message points users there as a fallback.
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 0 |
| Duplication | 0 |
TIP This summary will be updated as you push new changes. Give us feedback
|
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes all 11 failures in the weekly scheduled integration run on
main(run 24655630991).Three distinct root causes:
Stale pandas API in test_integration.py (9 failures). v2.0.0 changed
abovepy.search()to return aSearchResultworkflow object, but the integration suite still calledtiles.columnsandtiles.iloc[0][...]. Routed throughSearchResult.tiles(the underlying GeoDataFrame).Missing
osgeoin CI (1 failure —test_mosaic_vrt)._build_vrtimportsfrom osgeo import gdal; GDAL Python bindings aren't bundled with rasterio and aren't in any optional-dep group. Wrapped the import to raiseMosaicErrorwith install guidance, and marked the testpytest.importorskip("osgeo")so it skips rather than hard-fails when bindings aren't present.Real Phase 1 LAZ coverage gap (1 failure —
test_laz_products[laz_phase1]). Phase 1 LiDAR was flown county-by-county 2010–2017 and Franklin County (Frankfort) was not in that batch, so the Frankfort fixture cannot return Phase 1 LAZ tiles. Switchedtest_laz_productstopike_county_bbox, which has all three phases.Verification
Ran full suite locally against the live STAC API on commit f8c72f6:
The single skip is
test_mosaic_vrt— expected behavior whenosgeois not installed. Unit tests (pytest tests/ --ignore=tests/test_integration.py):481 passed.ruff check,ruff format --check, andmypy src/abovepy/all clean.Test plan
CIworkflow viaworkflow_dispatchon this branch to exercise the integration job in the real CI environment before merge.