injectorpp 0.5.1

Injectorpp is a powerful tool designed to facilitate the writing of unit tests without the need to introduce traits solely for testing purposes. It streamlines the testing process by providing a seamless and efficient way to abstract dependencies, ensuring that your code remains clean and maintainable.
Documentation
name: Code Coverage

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

permissions:
  contents: read

jobs:
  coverage-matrix:
    name: Coverage on ${{ matrix.os }} / ${{ matrix.target }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
          #- os: ubuntu-latest
          #  target: aarch64-unknown-linux-gnu
          - os: windows-latest
            target: x86_64-pc-windows-msvc

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      # Linux deps + QEMU for ARM64
      - name: Install Linux packages
        if: runner.os == 'Linux'
        run: |
          sudo apt-get update
          sudo apt-get install -y llvm lcov qemu-user-static gcc-aarch64-linux-gnu binfmt-support

      - name: Enable QEMU binfmt
        if: runner.os == 'Linux'
        run: sudo update-binfmts --enable qemu-aarch64

      - name: Verify QEMU installation
        if: runner.os == 'Linux'
        run: |
          qemu-aarch64-static --version
          echo "QEMU for ARM64 is properly configured."

      - name: Install cross
        if: runner.os == 'Linux'
        run: cargo install cross --locked

      # Windows LLVM
      - name: Install LLVM on Windows
        if: runner.os == 'Windows'
        run: choco install llvm --no-progress

      # Nightly + llvm-cov
      - name: Install Rust nightly
        uses: actions-rs/toolchain@v1
        with:
          toolchain: nightly
          override: true

      - name: Install cargo-llvm-cov
        run: cargo install cargo-llvm-cov --locked

      # Install the standard library for the chosen target
      - name: Add Rust target
        run: rustup target add ${{ matrix.target }}

      # Run coverage in one logical command (no backslashes)
      - name: Run coverage
        env:
          RUSTFLAGS: "-C instrument-coverage"
          CARGO_INCREMENTAL: "0"
        shell: bash
        run: |
          cargo llvm-cov --branch --workspace --html --target ${{ matrix.target }}

      - name: Move HTML report
        run: mv target/llvm-cov/html target/coverage-${{ matrix.os }}-${{ matrix.target }}

      - name: Upload HTML coverage report
        uses: actions/upload-artifact@v4
        with:
          name: html-report-${{ matrix.os }}-${{ matrix.target }}
          path: target/coverage-${{ matrix.os }}-${{ matrix.target }}