Skip to content

Codecov upload, badges, and tests to 100% line coverage - #2

Merged
sshin23 merged 4 commits into
masterfrom
robin/codecov
Aug 11, 2026
Merged

Codecov upload, badges, and tests to 100% line coverage#2
sshin23 merged 4 commits into
masterfrom
robin/codecov

Conversation

@sshin23

@sshin23 sshin23 commented Aug 11, 2026

Copy link
Copy Markdown
Member

Summary

  • CI uploads coverage to Codecovpytest --cov with coverage.xml through codecov-action@v5 and the org CODECOV_TOKEN; CI and codecov badges added to the README. CI also installs cyipopt (its manylinux wheel needs no system Ipopt), so the solve_ipopt path now runs in CI instead of skipping.
  • The suite now covers every line — 264/264 across __init__.py and ipopt.py. What was missing and is now tested:
    • the table builder path via the fixture's new tb prefix, end-to-end plus its refusals (schema-column mismatch, differing column lengths, and a column the library rejects surfacing as its setter's status);
    • every builder failure stage, each with its own fixture surface: bf (data_begin fails), nf (new_from_data fails), ns (builder without a schema), zz (a fixed library whose constructor fails), and fx with a non-integer argument (no builder surface at all);
    • the value guards (bool/type/dtype/ndim), schema key validation, environment initialization of the search path, the directory-without-a-library error, and the x/y shape guards.
  • One behavior fix that fell out: CModel now instantiates before resolving the evaluation-symbol table — the order the Julia consumer already uses — so an instantiation failure surfaces as what it is, not as a missing evaluation symbol on a library that never got that far.

The fixture stays byte-identical with the CNLPModels.jl copy (companion PR there).

🤖 Generated with Claude Code

CI installs pytest-cov and cyipopt (its manylinux wheel needs no system
Ipopt), runs pytest with coverage, and uploads coverage.xml with
codecov-action@v5 using the org CODECOV_TOKEN; CI + codecov badges added
to the README. With cyipopt present the solve_ipopt path runs in CI
instead of skipping.

The suite now covers every line (264/264 across __init__.py and ipopt.py):

- the TABLE builder path via the fixture's new tb prefix, end-to-end plus
  its refusals (schema-column mismatch, differing column lengths, and a
  column the library rejects surfacing as its setter's status);
- every builder failure stage, each with its own fixture surface: bf
  (data_begin fails), nf (new_from_data fails), ns (builder without a
  schema), zz (a fixed library whose constructor fails), and fx with a
  non-integer argument (no builder surface at all);
- the value guards (bool/type/dtype/ndim), the schema key validation, the
  environment initialization of the search path, the
  directory-without-a-library error, and the x/y shape guards.

CModel now instantiates before resolving the evaluation-symbol table —
the order the Julia consumer already uses — so an instantiation failure
surfaces as what it is, not as a missing evaluation symbol.
cyipopt publishes no binary wheel for this runner, and its sdist needs a
system Ipopt discoverable through pkg-config — Ubuntu's coinor-libipopt-dev
provides it. Keeps solve_ipopt exercised (and covered) in CI rather than
skipped.
Mirrors CNLPModels.jl: the org CODECOV_TOKEN is repo-scoped and routes
uploads to madnlp/examodels-py's slug; OIDC attributes the upload to the
repo that ran the workflow.
The sdist compiled but failed at link on -ldmumps_seq: Ubuntu's
coinor-libipopt-dev pulls the runtime MUMPS in, not the dev symlinks the
linker needs.
@codecov

codecov Bot commented Aug 11, 2026

Copy link
Copy Markdown

Welcome to Codecov 🎉

Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests.

Thanks for integrating Codecov - We've got you covered ☂️

@sshin23
sshin23 merged commit 4a14e81 into master Aug 11, 2026
4 checks passed
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.

1 participant