Skip to content

fix: fix unbounded trace row generation for rv32im_hintbuffer #4549

fix: fix unbounded trace row generation for rv32im_hintbuffer

fix: fix unbounded trace row generation for rv32im_hintbuffer #4549

name: Extension Tests
on:
workflow_call:
push:
branches: ["main"]
pull_request:
branches: ["**"]
paths:
- "crates/circuits/**"
- "crates/vm/**"
- "crates/toolchain/**"
- "extensions/**"
- "Cargo.toml"
- ".github/workflows/extension-tests.yml"
concurrency:
group: ${{ github.workflow_ref }}-extension-tests-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
OPENVM_FAST_TEST: "1"
OPENVM_SKIP_DEBUG: "1"
jobs:
extension-tests:
strategy:
matrix:
extension:
- { name: "rv32im", path: "rv32im", aot: false }
- { name: "native", path: "native", aot: false }
- { name: "keccak256", path: "keccak256", aot: false }
- { name: "sha256", path: "sha256", aot: false }
- { name: "bigint", path: "bigint", aot: false }
- { name: "algebra", path: "algebra", aot: false }
- { name: "ecc", path: "ecc", aot: false }
- { name: "pairing", path: "pairing", aot: false }
- { name: "rv32im", path: "rv32im", aot: true }
- { name: "native", path: "native", aot: true }
- { name: "keccak256", path: "keccak256", aot: true }
- { name: "sha256", path: "sha256", aot: true }
- { name: "bigint", path: "bigint", aot: true }
- { name: "algebra", path: "algebra", aot: true }
- { name: "ecc", path: "ecc", aot: true }
- { name: "pairing", path: "pairing", aot: true }
platform:
- { runner: "64cpu-linux-x64", image: "ubuntu24-full-x64" }
# Ensure tests run in parallel even if one fails
fail-fast: false
runs-on:
- runs-on=${{ github.run_id }}-extension-tests-${{ github.run_attempt }}-${{ strategy.job-index }}/runner=${{ matrix.platform.runner }}/image=${{ matrix.platform.image }}/extras=s3-cache
steps:
- uses: runs-on/action@v2
- uses: actions/checkout@v5
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
- "crates/circuits/**"
- "crates/vm/**"
- "crates/toolchain/**"
- "extensions/${{ matrix.extension.path }}/**"
- ".github/workflows/extension-tests.yml"
- name: Skip if no changes
if: steps.filter.outputs.matched == 'false'
run: |
echo "No relevant changes, skipping tests."
exit 0
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- uses: taiki-e/install-action@nextest
- name: Run ${{ format('{0}{1}', matrix.extension.name, matrix.extension.aot && '-aot' || '') }} circuit crate tests
working-directory: extensions/${{ matrix.extension.path }}/circuit
run: |
TEST_THREADS="--test-threads=32"
if [[ "${{ matrix.extension.name }}" == "algebra" ]]; then
TEST_THREADS="--test-threads=4"
fi
if [[ "${{ matrix.extension.aot }}" == 'true' ]]; then
cargo nextest run --cargo-profile=fast --features aot $TEST_THREADS --no-tests=pass --success-output=immediate
else
cargo nextest run --cargo-profile=fast $TEST_THREADS --no-tests=pass --success-output=immediate
fi
# We only need to run guest crate tests on CPU since we are not testing prover functionality
- name: Run ${{ matrix.extension.name }} guest crate tests
if: hashFiles(format('extensions/{0}/guest', matrix.extension.path)) != ''
working-directory: extensions/${{ matrix.extension.path }}/guest
run: |
GUEST_FEATURE_ARGS=""
if [[ "${{ matrix.extension.name }}" == "pairing" ]]; then
GUEST_FEATURE_ARGS="--features=bn254,bls12_381,halo2curves"
fi
cargo nextest run --cargo-profile=fast $GUEST_FEATURE_ARGS --no-tests=pass
- name: Run ${{ format('{0}{1}', matrix.extension.name, matrix.extension.aot && '-aot' || '') }} integration tests
if: hashFiles(format('extensions/{0}/tests', matrix.extension.path)) != ''
working-directory: extensions/${{ matrix.extension.path }}/tests
run: |
rustup component add rust-src --toolchain nightly-2025-08-02
if [[ "${{ matrix.extension.aot }}" == 'true' ]]; then
cargo nextest run --cargo-profile=fast --features aot --profile=heavy --no-tests=pass --success-output=immediate
else
cargo nextest run --cargo-profile=fast --profile=heavy --no-tests=pass --success-output=immediate
fi