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
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@v4
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 : 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 3 : 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 4 : 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@v4
with:
files: lcov-default.info,lcov-serde.info
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}