1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
name: Coverage
on:
push:
branches:
pull_request:
branches:
env:
CARGO_TERM_COLOR: always
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true # opt-in Node 24 — remove when actions/checkout@v5 available
jobs:
coverage:
name: Code Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0 # full history required for Codecov branch tracking
- uses: dtolnay/rust-toolchain@stable
with:
components: llvm-tools-preview
- uses: Swatinem/rust-cache@v2
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
# ── Dépendances système (à activer si nécessaire) ──────────────────────
# Certains modules peuvent requérir des bibliothèques système installées
# via apt avant que les tests puissent s'exécuter.
# Décommenter et adapter si un tel besoin apparaît :
#
# - name: Install system dependencies
# run: |
# sudo apt-get update -q
# sudo apt-get install -y --no-install-recommends \
# libnom-du-paquet-dev \
# autre-paquet-dev
# ──────────────────────────────────────────────────────────────────────
# ── Run 1 : default features (core engine) ────────────────────────────
# Seul run actif tant que les features parallel/serde ne sont pas
# déclarés dans Cargo.toml. À compléter au fur et à mesure des jalons.
- name: Coverage — default features
run: |
cargo llvm-cov --all-targets \
--lcov --output-path lcov-default.info
# ── Run 2 : sparse feature (faer) — DD-013, DD-043 (#50) ───────────────
# Code réel depuis ce sprint (solver::sparse, banded jacobian,
# BackwardEuler/CrankNicolson dispatch) — contrairement à `hdf5`
# ci-dessous, ce run couvre du comportement effectif.
- name: Coverage — sparse feature
run: |
cargo llvm-cov --all-targets --features sparse \
--lcov --output-path lcov-sparse.info
# ── Run 3 : hdf5 feature — DD-027 (#75), migré vers hdf5-metno (#79) ───
# Pas encore activé : aucun code n'utilise cette feature
# (`ExternalTabulated` non implémenté) — un run de couverture n'aurait
# aucune ligne réelle à mesurer. À activer avec l'implémentation
# réelle, en réutilisant l'installation système ci-dessous.
#
# - name: Install system dependencies (HDF5)
# run: |
# sudo apt-get update -q
# sudo apt-get install -y --no-install-recommends libhdf5-dev pkg-config
#
# - name: Coverage — hdf5 feature
# run: |
# cargo llvm-cov --all-targets --features hdf5 \
# --lcov --output-path lcov-hdf5.info
# ── Run 4 : all features ──────────────────────────────────────────────
# À activer dès qu'au moins un feature optionnel est déclaré dans
# Cargo.toml (parallel, serde, hdf5...).
#
# - name: Coverage — all features
# run: |
# cargo llvm-cov --all-targets --all-features \
# --lcov --output-path lcov-all.info
# ── Run 5 : parallel feature only ─────────────────────────────────────
# À activer quand Cargo.toml contient : [features] parallel = [...]
#
# - name: Coverage — parallel feature
# run: |
# cargo llvm-cov --all-targets --features parallel \
# --lcov --output-path lcov-parallel.info
# ── Run 6 : serde feature only ────────────────────────────────────────
- name: Coverage — serde feature
run: |
cargo llvm-cov --all-targets --features serde \
--lcov --output-path lcov-serde.info
# ── FEM invariants integration test ───────────────────────────────────
# Dédié aux tests INV-1/2/3 dans tests/fem_invariants.rs.
# À activer quand ce fichier de test existe.
#
# - name: Coverage — FEM invariants
# run: |
# cargo llvm-cov --test fem_invariants \
# --lcov --output-path lcov-fem.info
# ── Upload to Codecov ─────────────────────────────────────────────────
- name: Upload to Codecov
uses: codecov/codecov-action@v6
with:
files: lcov-default.info,lcov-sparse.info,lcov-serde.info
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}