| name: test-bindings |
| |
| on: |
| push: |
| branches: [main] |
| pull_request: |
| branches: [main] |
| |
| env: |
| CMAKE_GENERATOR: Ninja |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| python_bindings: |
| name: Test Python ${{ matrix.python-version }} bindings on ${{ matrix.os }} |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [ ubuntu-latest, macos-latest, windows-latest ] |
| python-version: [ "3.10", "3.11", "3.12", "3.13" ] |
| |
| steps: |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
| with: |
| fetch-depth: 0 |
| - name: Set up Python ${{ matrix.python-version }} |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 |
| with: |
| python-version: ${{ matrix.python-version }} |
| - name: Install Python bindings on ${{ matrix.os }} |
| run: python -m pip install . |
| - name: Run example on ${{ matrix.os }} under Python ${{ matrix.python-version }} |
| run: python bindings/python/google_benchmark/example.py |
| |
| rust_bindings: |
| name: Test Rust bindings on ${{ matrix.os }} |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [ ubuntu-latest, macos-latest, windows-latest ] |
| steps: |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
| with: |
| fetch-depth: 0 |
| - name: Install Rust toolchain |
| uses: dtolnay/rust-toolchain@stable |
| - name: Install Ninja (macOS) |
| if: runner.os == 'macOS' |
| run: brew install ninja |
| - name: Run Rust tests natively via Cargo |
| run: cargo test |
| working-directory: bindings/rust |
| - name: Run Rust tests via CMake |
| run: | |
| cmake -S . -B build -DBENCHMARK_ENABLE_RUST_BINDINGS=ON -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON |
| cmake --build build |
| cd build && ctest -R rust_bindings_tests |