conspire 0.7.1

The Rust interface to conspire.
Documentation
name: Test
concurrency:
  cancel-in-progress: true
  group: ${{ github.workflow }}-${{ github.head_ref }}
env:
  CARGO_TERM_COLOR: always
on:
  pull_request:
    branches: main
permissions: {}
jobs:
  Checks:
    strategy:
      fail-fast: true
      matrix:
        features:
          - math
          - io
          - io,netcdf
          - geometry
          - geometry,netcdf
          - mechanics
          - physics
          - constitutive
          - fem
          - vem
          - all
        os: [macos-latest, windows-latest, ubuntu-latest]
        toolchain: [beta, nightly, stable]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout
        uses: actions/checkout@v7
      - name: Toolchain
        uses: actions-rs/toolchain@88dc2356392166efad76775c878094f4e83ff746
        with:
          components: clippy, rustfmt
          toolchain: ${{ matrix.toolchain }}
      - name: netCDF
        if: ${{ contains(matrix.features, 'netcdf') || matrix.features == 'all' }}
        shell: bash
        run: |
          case "${{ runner.os }}" in
            Linux) sudo apt-get update && sudo apt-get install -y libnetcdf-dev ;;
            macOS) brew install netcdf ;;
            Windows)
              vcpkg install netcdf-c:x64-windows
              echo "C:/vcpkg/installed/x64-windows/bin" >> "$GITHUB_PATH"
              ;;
          esac
      - name: Format
        run: cargo fmt --all -- --check
      - name: Clippy
        run: cargo clippy --release --features ${{ matrix.features }} -- -D warnings
      - name: Clippy tests
        run: cargo clippy --release --features ${{ matrix.features }} --tests -- -D warnings
      - name: Test
        run: cargo test --release --features ${{ matrix.features }}
  Coverage:
    strategy:
      fail-fast: true
      matrix:
        features:
          - math
          - io
          - io,netcdf
          - geometry
          - geometry,netcdf
          - mechanics
          - physics
          - constitutive
          # - fem
          # - vem
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v7
      - name: Toolchain
        uses: actions-rs/toolchain@88dc2356392166efad76775c878094f4e83ff746
        with:
          toolchain: stable
      - name: netCDF
        if: contains(matrix.features, 'netcdf')
        run: sudo apt-get update && sudo apt-get install -y libnetcdf-dev
      - name: Install
        run: cargo install cargo-llvm-cov
      - name: Coverage
        if: matrix.features == 'io' || matrix.features == 'io,netcdf'
        run: cargo llvm-cov test --profile release --features ${{ matrix.features }} --fail-under-functions 100 --fail-under-lines 98 --fail-under-regions 98
      - name: Coverage
        if: matrix.features != 'io' && matrix.features != 'io,netcdf'
        run: cargo llvm-cov test --profile release --features ${{ matrix.features }} --fail-under-functions 50 --fail-under-lines 50 --fail-under-regions 50
      - name: Tree
        run: $([[ $(cargo tree --color always --edges normal --features ${{ matrix.features }} | wc -l) -eq 1 ]])
  Mutants:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v7
      - name: Install
        run: cargo install cargo-mutants
      - name: Mutants
        run: cargo mutants --features math --file 'src/math/**/*.rs' --minimum-test-timeout 0.9 --profile release --shard 1/256 || true