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: CI

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

permissions:
  contents: read

jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        include:
          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
          - os: ubuntu-latest
            target: aarch64-unknown-linux-gnu
          - os: ubuntu-24.04-arm
            target: aarch64-unknown-linux-gnu
          - os: ubuntu-24.04-arm
            target: armv7-unknown-linux-gnueabihf
            base_image: raspios_lite:latest
          - os: ubuntu-24.04-arm
            target: thumbv7neon-unknown-linux-gnueabihf
            base_image: raspios_lite:latest
          - os: windows-latest
            target: x86_64-pc-windows-msvc
          - os: windows-11-arm
            target: aarch64-pc-windows-msvc
          - os: macos-latest
            target: aarch64-apple-darwin

    runs-on: ${{ matrix.os }}
    name: Build & test on ${{ matrix.os }} / ${{ matrix.target }}

    steps:
      - uses: actions/checkout@v3

      - name: Debug PATH
        shell: bash
        run: echo $PATH

      - name: Set up Rust
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable
          components: clippy, rustfmt
          target: aarch64-pc-windows-msvc

      - name: Verify Cargo Installation
        shell: bash
        run: cargo --version

      # Install cross-compilation toolchain for ARM targets
      - name: Install ARM toolchain
        if: matrix.target == 'armv7-unknown-linux-gnueabihf' || matrix.target == 'thumbv7neon-unknown-linux-gnueabihf'
        run: |
          sudo dpkg --add-architecture armhf
          sudo apt-get update
          sudo apt-get install -y gcc-arm-linux-gnueabihf libssl-dev:armhf pkg-config

      # Add Rust target for all targets
      - name: Add Rust target
        run: rustup target add ${{ matrix.target }}

      - name: Build (ARM targets)
        if: matrix.target == 'armv7-unknown-linux-gnueabihf' || matrix.target == 'thumbv7neon-unknown-linux-gnueabihf'
        shell: bash
        env:
          CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-gcc
          CARGO_TARGET_THUMBV7NEON_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-gcc
          OPENSSL_LIB_DIR: /usr/lib/arm-linux-gnueabihf
          OPENSSL_INCLUDE_DIR: /usr/include/openssl
          PKG_CONFIG_ALLOW_CROSS: 1
          PKG_CONFIG_PATH: /usr/lib/arm-linux-gnueabihf/pkgconfig
        run: |
          cargo build --target ${{ matrix.target }} --release

      - name: Build (other targets)
        if: matrix.target != 'armv7-unknown-linux-gnueabihf' && matrix.target != 'thumbv7neon-unknown-linux-gnueabihf'
        shell: bash
        run: |
          if [[ "${{ matrix.target }}" == "aarch64-unknown-linux-gnu" && "${{ matrix.os }}" == "ubuntu-latest" ]]; then
            echo "skip"
          else
            cargo build --target ${{ matrix.target }} --release
          fi

      - name: Test (ARM targets)
        if: matrix.target == 'armv7-unknown-linux-gnueabihf' || matrix.target == 'thumbv7neon-unknown-linux-gnueabihf'
        shell: bash
        env:
          CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-gcc
          CARGO_TARGET_THUMBV7NEON_UNKNOWN_LINUX_GNUEABIHF_LINKER: arm-linux-gnueabihf-gcc
          OPENSSL_LIB_DIR: /usr/lib/arm-linux-gnueabihf
          OPENSSL_INCLUDE_DIR: /usr/include/openssl
          PKG_CONFIG_ALLOW_CROSS: 1
          PKG_CONFIG_PATH: /usr/lib/arm-linux-gnueabihf/pkgconfig
          RUST_BACKTRACE: full
        run: |
          cargo test --target ${{ matrix.target }} --tests -- --nocapture

      - name: Test (other targets)
        if: matrix.target != 'armv7-unknown-linux-gnueabihf' && matrix.target != 'thumbv7neon-unknown-linux-gnueabihf'
        shell: bash
        env:
          RUST_BACKTRACE: full
        run: |
          if [[ "${{ matrix.target }}" == "aarch64-unknown-linux-gnu" && "${{ matrix.os }}" == "ubuntu-latest" ]]; then
            echo "skip"
          else
            cargo test --target ${{ matrix.target }} --tests -- --nocapture
          fi