fix(coverage+validation): C2/C3 script gate, V1/V2/V4 JSON/XML errors, I2/I3/I4 tests
C2: Fix coverage.sh — remove || true from lcov capture/extract steps so real
lcov failures are visible; empty coverage.info now exits with code 3.
C3: Add coverage gate to quality-gates CI job (SKIP_COVERAGE_GATE=1 ramp-up
mode until I5 is resolved — fast suite covers ~9.6% not 80%). Thresholds:
80% line / 70% branch / 90% function (agreed 2026-05-31).
V1: Wrap JSON parse + field extraction in try/catch — nlohmann parse_error and
type_error now surface as std::runtime_error with the file path.
V2: Wrap stoi/stod in XML Solver parser — missing/non-numeric attributes throw
std::runtime_error instead of leaking std::invalid_argument.
V4: Validate required JSON keys (dof_vector, solver, solver.*) before access —
missing field produces a clear named-field error message.
I2: 6 serialization negative tests (missing file, malformed JSON, missing
dof_vector, missing solver block, missing XML file, non-numeric XML attr).
I3: load_mesh throws on non-triangulated (quad) mesh — covers the
is_triangle_mesh guard that was previously untested.
I4: spherical_hessian throws on edge DOFs — covers the logic_error guard.
290/290 tests pass (+8 new).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -160,9 +160,18 @@ jobs:
|
||||
- name: shellcheck (scripts/**/*.sh, severity=warning, strict)
|
||||
run: bash scripts/quality/shellcheck.sh --strict
|
||||
|
||||
- name: Install lcov (coverage gate)
|
||||
run: apt-get install -y --no-install-recommends lcov
|
||||
|
||||
- name: Coverage gate (fast-test suite, ramp-up mode)
|
||||
# SKIP_COVERAGE_GATE=1: reports numbers but does not fail on threshold.
|
||||
# Remove once I5 is resolved (coverage is wired to the full CGAL suite,
|
||||
# not just the 26 fast tests). Threshold: 80% line / 70% branch / 90% func.
|
||||
run: SKIP_COVERAGE_GATE=1 bash scripts/quality/coverage.sh
|
||||
|
||||
- name: Summary
|
||||
if: always()
|
||||
run: |
|
||||
echo "QUALITY ▸ all four gates passed."
|
||||
echo "QUALITY ▸ all gates passed."
|
||||
echo " see scripts/quality/README.md for the full catalogue"
|
||||
echo " (sanitizers, clang-tidy, coverage, etc. are local-only)"
|
||||
echo " (sanitizers, clang-tidy, coverage report in build-coverage/)"
|
||||
|
||||
Reference in New Issue
Block a user