oxiflow 0.3.0

Generic PDE solving engine for transport, reaction and diffusion phenomena (∂u/∂t + ∇·F = S)
Documentation
name: Coverage

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

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 }}