Skip to content

eckit::geo: geo tests conditional on their required features - #358

Merged
pmaciel merged 15 commits into
developfrom
sync-branch/feature-mtg2-encoder
Oct 1, 2026
Merged

pmaciel merged 15 commits into
developfrom
sync-branch/feature-mtg2-encoder

Conversation

@pmaciel

@pmaciel pmaciel commented Sep 29, 2026 •

Copy link
Copy Markdown
Member

Description

  • Projections:

    • projections declare their source and target point types
    • forward and inverse transforms work on whole vectors of points, not only single points (eckit python)
    • new ProjectionFactory::build(spec)
    • fuller PROJ, Rotation, Composer and Reverse implementations
    • large new test coverage
    • Rotation integrated into grids: grids accept a rotation spec and build rotated regular grids, with tests
  • Figures:

    • figures can be compared, specs can be given inline; when a spec gives only a size, the default figure is chosen from it.
    • Points: coordinate names per point type.
  • Static factories: a simpler factory pattern for grids, iterators and projections, with less boilerplate.

  • Thread safety: lock_type now owns its mutex. It's used across the caches (memory, disk, download, grid, lat/lon), HEALPix, ranges and the k-d tree search.

  • ORCA grids: definitions updated from v0 to v1 (share/eckit/geo/ORCA.yaml).

  • eckit::spec: improved floating-point output.

  • eckit python: numpy is now optional.

Fix download-dependent tests in builds without curl. The geo tests that download grid data now only run when eckit is built with curl: these are conditioned on eckit_HAVE_LZ4 AND eckit_HAVE_CURL, and the PROJ tests use CONDITION eckit_HAVE_PROJ.

The cache test is always built: its download, grid and unzip cases are guarded in the source by eckit_HAVE_CURL / eckit_HAVE_LZ4 / eckit_HAVE_ZIP. The zip file it unpacks is now passed as an argument (--cacheable_zip) instead of a compile definition, and the unzip case is skipped when no file is given.

cache/Unzip is now part of eckit_geo whenever ZIP is enabled (previously only with shapefile support), so the test no longer compiles it separately.

Contributor Declaration

By opening this pull request, I affirm the following:

  • All authors agree to the Contributor License Agreement.
  • The code follows the project's coding standards.
  • I have performed self-review and added comments where needed.
  • I have added or updated tests to verify that my changes are effective and functional.
  • I have run all existing tests and confirmed they pass.

🌦️ >> Documentation << 🌦️
https://sites.ecmwf.int/docs/dev-section/eckit/pull-requests/PR-358

@pmaciel
pmaciel requested a review from mcocdawc September 29, 2026 14:34
@mcocdawc mcocdawc added downstream-ci-not-needed Deliberately skip the downstream fan-out run-downstream-CI and removed downstream-ci-not-needed Deliberately skip the downstream fan-out labels Sep 29, 2026
@pmaciel
pmaciel force-pushed the sync-branch/feature-mtg2-encoder branch from e656854 to aff46b8 Compare September 29, 2026 18:44
@codecov-commenter

codecov-commenter commented Sep 29, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 86.16667% with 83 lines in your changes missing coverage. Please review.
✅ Project coverage is 68.73%. Comparing base (1278125) to head (be53483).

Files with missing lines Patch % Lines
tests/geo/projection.cc 89.59% 18 Missing ⚠️
src/eckit/geo/projection/Composer.cc 52.17% 11 Missing ⚠️
src/eckit/geo/area/BoundingBox.cc 64.28% 10 Missing ⚠️
src/eckit/geo/Area.cc 38.46% 8 Missing ⚠️
src/eckit/geo/projection/Rotation.h 36.36% 7 Missing ⚠️
src/eckit/geo/projection/Rotation.cc 86.04% 6 Missing ⚠️
src/eckit/geo/Projection.cc 94.68% 5 Missing ⚠️
src/eckit/geo/Iterator.cc 0.00% 4 Missing ⚠️
src/eckit/geo/Grid.cc 90.32% 3 Missing ⚠️
src/eckit/geo/grid/regular/RegularXY.cc 0.00% 3 Missing ⚠️
... and 8 more
Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #358      +/-   ##
===========================================
+ Coverage    67.97%   68.73%   +0.76%     
===========================================
  Files         1187     1188       +1     
  Lines        62532    63017     +485     
  Branches      4715     4743      +28     
===========================================
+ Hits         42503    43312     +809     
+ Misses       20029    19705     -324     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@pmaciel

pmaciel commented Sep 29, 2026

Copy link
Copy Markdown
Member Author

@mcocdawc I think this is ready -- all tests pass (except much downstream ones from the old CI)

@pmaciel
pmaciel force-pushed the sync-branch/feature-mtg2-encoder branch from aff46b8 to 69712b0 Compare September 30, 2026 08:26
@pmaciel pmaciel self-assigned this Sep 30, 2026

@mcocdawc mcocdawc left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The title and description cover only the last commit (the test guards), but this PR re-enables feature/eckit-geo. Could you put a short note in the PR description.

for disclosure: I reviewed with AI tools, but the comments do make sense.

Comment thread tests/geo/cache.cc Outdated
Comment thread tests/geo/cache.cc Outdated
@pmaciel
pmaciel force-pushed the sync-branch/feature-mtg2-encoder branch from 8701a50 to 22759e7 Compare September 30, 2026 22:47
@pmaciel
pmaciel force-pushed the sync-branch/feature-mtg2-encoder branch from 22759e7 to be53483 Compare October 1, 2026 13:55
@mcocdawc mcocdawc added the downstream-ci-not-needed Deliberately skip the downstream fan-out label Oct 1, 2026

@mcocdawc mcocdawc left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great :) and the separation of unzip.cc is nice.

Note though: no CI image has libzip, so the unzip test still never runs.
Might be worth to create an issue and follow up on it.

If ecmwf/eccodes#573 is also ready they can be merged in order eckit, then eccodes.

@pmaciel
pmaciel merged commit a578f84 into develop Oct 1, 2026
162 of 166 checks passed
@pmaciel
pmaciel deleted the sync-branch/feature-mtg2-encoder branch October 1, 2026 14:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

downstream-ci-not-needed Deliberately skip the downstream fan-out

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants