| 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", "3.14", "3.14t", "3.15", "3.15t" ] | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| allow-prereleases: true | |
| - 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@3d3c42e5aac5ba805825da76410c181273ba90b1 | |
| with: | |
| fetch-depth: 0 | |
| persist-credentials: false | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 | |
| with: | |
| 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 |