Skip to content

fix(autotest): skip tests that need an optional dependency - #2797

Merged
jdhughes-dev merged 1 commit into
modflowpy:developfrom
jdhughes-dev:fix-optional-deps
Aug 7, 2026
Merged

fix(autotest): skip tests that need an optional dependency#2797
jdhughes-dev merged 1 commit into
modflowpy:developfrom
jdhughes-dev:fix-optional-deps

Conversation

@jdhughes-dev

Copy link
Copy Markdown
Contributor

Tests that build a DISV or DISU grid, an hfb array, or a Delaunay triangulation failed in the nightly optional dependency job with an ImportError for shapely or scipy rather than being skipped, and a module level import of pyshp or scipy stopped test_export, test_grid, and test_shapefile_utils from being collected. Those tests are now marked with the package they need and the module level imports have been moved into the tests that use them.

The parameter list for test_voronoi_grid was emptied when shapely or scipy was missing while its list of ids was not, which is a collection error; the test is skipped by its requires_pkg mark, so the guard has been removed.

The nightly optional dependency job runs the test suite with only the
required dependencies installed. Tests that build a DISV or DISU grid,
an hfb array, or a Delaunay triangulation failed there with an
ImportError for shapely or scipy rather than being skipped, and a
module level import of pyshp or scipy stopped test_export, test_grid,
and test_shapefile_utils from being collected at all. Those tests are
now marked with the package they need and the module level imports have
been moved into the tests that use them.

The parameter list for test_voronoi_grid was emptied when shapely or
scipy was missing while its list of ids was not, which is a collection
error; the test is skipped by its requires_pkg mark, so the guard has
been removed.
@codecov

codecov Bot commented Aug 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 72.8%. Comparing base (556c088) to head (e1219a5).
⚠️ Report is 190 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #2797      +/-   ##
===========================================
+ Coverage     55.5%    72.8%   +17.2%     
===========================================
  Files          644      662      +18     
  Lines       124135   133012    +8877     
===========================================
+ Hits         68947    96847   +27900     
+ Misses       55188    36165   -19023     

see 583 files with indirect coverage changes

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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR updates FloPy’s test suite to correctly skip tests that require optional dependencies (notably shapely, scipy, and pyshp) so that optional-dependency CI jobs don’t fail on ImportError and test modules remain collectable.

Changes:

  • Added requires_pkg(...) markers (or pytest.importorskip(...) in fixtures) to tests that require optional dependencies.
  • Moved module-level optional imports (scipy.spatial.Delaunay, shapefile) into the specific tests that use them to avoid collection-time import failures.
  • Removed the has_pkg(...) parameter-list guard in test_voronoi_grid that could cause a collection error when ids remained non-empty.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated no comments.

Show a summary per file
File Description
autotest/test_postprocessing.py Marks DISV/DISU transmissivity tests as requiring shapely.
autotest/test_plot_map_view.py Skips non-structured grid HFB fixtures when shapely is unavailable.
autotest/test_plot_cross_section.py Skips non-structured grid HFB cross-section fixtures when shapely is unavailable.
autotest/test_lgrutil.py Marks the hanging-vertices LGR test as requiring shapely.
autotest/test_hfb_util.py Applies a module-level requires_pkg("shapely") mark since all tests require it.
autotest/test_gridintersect.py Adds requires_pkg("shapely") to specific tests that require shapely geometry helpers.
autotest/test_grid.py Moves Delaunay imports into tests and marks them with requires_pkg("scipy"); removes faulty param-list guard now covered by requires_pkg.
autotest/test_export.py Moves shapefile import into the shapefile export tests (already guarded by requires_pkg("pyshp", ...)).
autotest/test_cellbudgetfile.py Marks DISV/DISU-related MF6 budget tests as requiring shapely.
autotest/test_binaryfile.py Marks DISV/DISU-related MF6 headfile tests as requiring shapely.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@jdhughes-dev
jdhughes-dev merged commit 1885436 into modflowpy:develop Aug 7, 2026
68 of 77 checks passed
@jdhughes-dev
jdhughes-dev deleted the fix-optional-deps branch August 7, 2026 14:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants