Skip to content

feat!: add params to ProofExpr and ProofPlan #4718

feat!: add params to ProofExpr and ProofPlan

feat!: add params to ProofExpr and ProofPlan #4718

Workflow file for this run

name: CI-Lint-And-Test
on:
workflow_call:
pull_request:
types: [opened, synchronize, reopened]
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
BLITZAR_BACKEND: cpu
jobs:
# Run cargo check (with various feature permutations)
check:
name: Check Package
runs-on: large-8-core-32gb-22-04
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install stable toolchain
run: curl https://sh.rustup.rs -sSf | bash -s -- -y --profile minimal && source ~/.cargo/env && rustup toolchain install
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
- name: Install Dependencies
run: export DEBIAN_FRONTEND=non-interactive && sudo apt-get update && sudo apt-get install -y clang lld
- name: Run cargo check (no features, exclude examples)
run: cargo check --no-default-features
- name: Run cargo check (default features)
run: cargo check --all-targets
- name: Run cargo check (all features)
run: cargo check --all-targets --all-features
- name: Run cargo check (proof-of-sql) (no features)
run: cargo check -p proof-of-sql --no-default-features
- name: Run cargo check (proof-of-sql) (all features)
run: |
cargo check -p proof-of-sql --all-features
cargo check -p proof-of-sql --all-targets --all-features
- name: Run cargo check (proof-of-sql) (just "test" feature)
run: |
cargo check -p proof-of-sql --no-default-features --features="test"
cargo check -p proof-of-sql --all-targets --no-default-features --features="test"
- name: Run cargo check (proof-of-sql) (just "blitzar" feature)
run: |
cargo check -p proof-of-sql --no-default-features --features="blitzar"
cargo check -p proof-of-sql --all-targets --no-default-features --features="blitzar"
- name: Run cargo check (proof-of-sql) (just "arrow" feature)
run: |
cargo check -p proof-of-sql --no-default-features --features="arrow"
cargo check -p proof-of-sql --all-targets --no-default-features --features="arrow"
- name: Run cargo check (proof-of-sql) (just "rayon" feature)
run: |
cargo check -p proof-of-sql --no-default-features --features="rayon"
cargo check -p proof-of-sql --all-targets --no-default-features --features="rayon"
- name: Run cargo check (proof-of-sql) (just "perf" feature)
run: |
cargo check -p proof-of-sql --no-default-features --features="perf"
cargo check -p proof-of-sql --all-targets --no-default-features --features="perf"
- name: Run cargo check (proof-of-sql) (just "std" feature)
run: |
cargo check -p proof-of-sql --no-default-features --features="std"
cargo check -p proof-of-sql --all-targets --no-default-features --features="std"
- name: Run cargo check (proof-of-sql-parser & proof-of-sql) with no_std target.
run: |
rustup target add thumbv7em-none-eabi
cargo check -p proof-of-sql-parser --target thumbv7em-none-eabi --no-default-features
cargo check -p proof-of-sql --target thumbv7em-none-eabi --no-default-features
- name: Check that we can compile `proof-of-sql-planner` to WebAssembly
working-directory: ./crates/proof-of-sql-planner
run: |
cargo install wasm-pack
wasm-pack build --target deno
test:
name: Test Suite
runs-on: large-8-core-32gb-22-04
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install stable toolchain
run: curl https://sh.rustup.rs -sSf | bash -s -- -y --profile minimal && source ~/.cargo/env && rustup toolchain install
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
- name: Install Dependencies
run: |
export DEBIAN_FRONTEND=non-interactive
sudo apt-get update
sudo apt-get install -y clang lld
- name: Run cargo test
run: cargo test --all-features
- name: Install Foundry/forge for solidity tests
uses: foundry-rs/foundry-toolchain@v1
- name: Run solidity tests (ignored by default)
run: cargo test --all-features --package proof-of-sql --lib -- tests::sol_test --show-output --ignored
- name: Run cargo test without rayon
run: cargo test --no-default-features --features="arrow blitzar"
- name: Dry run cargo test (proof-of-sql) (test feature only)
run: cargo test -p proof-of-sql --no-run --no-default-features --features="test"
- name: Dry run cargo test (proof-of-sql) (arrow feature only)
run: cargo test -p proof-of-sql --no-run --no-default-features --features="arrow"
- name: Dry run cargo test (proof-of-sql) (blitzar feature only)
run: cargo test -p proof-of-sql --no-run --no-default-features --features="blitzar"
- name: Dry run cargo test (proof-of-sql) (std feature only)
run: cargo test -p proof-of-sql --no-run --no-default-features --features="std"
- name: Run cargo test (proof primitives - Dory) (std feature only - i.e. not using blitzar)
run: |
cargo test proof_primitive::dory::dory_compute_commitments_test --no-default-features --features="std" && \
cargo test proof_primitive::dory::dynamic_dory_compute_commitments_test --no-default-features --features="std"
examples:
name: Run Examples (Heavy)
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install stable toolchain
run: curl https://sh.rustup.rs -sSf | bash -s -- -y --profile minimal && source ~/.cargo/env && rustup toolchain install
- name: Run hello_world example (With Blitzar)
run: cargo run --example hello_world --features="test"
- name: Run hello_world example (Without Blitzar and With Rayon)
run: cargo run --example hello_world --no-default-features --features="rayon test"
- name: Run hello_world example (Without Blitzar and Without Rayon)
run: cargo run --example hello_world --no-default-features --features="test"
- name: Run space example
run: cargo run --example space
- name: Run dog breeds example
run: cargo run --example dog_breeds
- name: Run wood types example
run: cargo run --example wood_types
- name: Run posql_db example (With Blitzar)
run: bash crates/proof-of-sql/examples/posql_db/run_example.sh
- name: Run posql_db example (Without Blitzar)
run: bash crates/proof-of-sql/examples/posql_db/run_example.sh --no-default-features --features="rayon"
clippy:
name: Clippy
runs-on: large-8-core-32gb-22-04
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install stable toolchain
run: |
curl https://sh.rustup.rs -sSf | bash -s -- -y --profile minimal && source ~/.cargo/env && rustup toolchain install
rustup component add clippy
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
- name: Install Dependencies
run: export DEBIAN_FRONTEND=non-interactive && sudo apt-get update && sudo apt-get install -y clang lld
- name: Run clippy
run: cargo cl -- -D warnings
coverage:
name: Code Coverage
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install Dependencies
run: sudo apt-get update && sudo apt-get install -y clang lld
- uses: taiki-e/install-action@cargo-llvm-cov
- name: Clean Previous Coverage Artifacts
run: cargo llvm-cov clean --workspace
- name: Run Tests to Generate Coverage Data (All Features)
run: cargo llvm-cov --no-report --all-features
#- name: Run Tests to Generate Coverage Data (Rayon Only)
# run: cargo llvm-cov --no-report --no-default-features --features="rayon"
#- name: Run Tests to Generate Coverage Data (Blitzar Only)
# run: cargo llvm-cov --no-report --no-default-features --features="blitzar"
#- name: Run Tests to Generate Coverage Data (std only)
# run: cargo llvm-cov --no-report --no-default-features --features="std"
- name: Generate Final LCOV Report (Merged Coverage)
run: cargo llvm-cov report --lcov --output-path lcov.info
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: lcov.info
fail_ci_if_error: true
- name: Enforce Coverage Threshold
run: cargo llvm-cov report --summary-only --fail-under-lines 94
# Run cargo f --check
format:
name: Format
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install stable toolchain
run: |
curl https://sh.rustup.rs -sSf | bash -s -- -y --profile minimal && source ~/.cargo/env && rustup toolchain install
rustup component add rustfmt
- name: Run cargo fmt
run: cargo f --check
udeps:
name: Unused Dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install nightly toolchain
run: |
curl https://sh.rustup.rs -sSf | bash -s -- -y --profile minimal && source ~/.cargo/env && rustup toolchain install nightly
cargo +nightly install cargo-udeps --locked
- name: Run cargo udeps
run: cargo +nightly udeps --all-targets
foundrycheck: # Modified from the foundry book: https://book.getfoundry.sh/config/continuous-integration
name: Foundry project
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: v1.0.0
- name: Install dependencies
run: solidity/scripts/install_deps.sh
- name: Run tests without via-ir or optimization
run: solidity/scripts/pre_forge.sh test
- name: Run tests with via-ir but without optimization
run: solidity/scripts/pre_forge.sh test --via-ir
- name: Run tests with optimization but without via-ir
run: solidity/scripts/pre_forge.sh test --optimize
- name: Run tests with via-ir and optimization
run: solidity/scripts/pre_forge.sh test --via-ir --optimize
- name: Install lcov
run: sudo apt-get update && sudo apt-get install -y lcov
- name: Check code coverage
run: solidity/scripts/check_coverage.sh
- name: Check fmt
run: solidity/scripts/pre_forge.sh fmt --check
- name: Run solhint
run: |
npm install -g solhint
cd solidity
solhint '**/*.sol' -w 0
cd ..
- name: Run slither
uses: crytic/slither-action@d86660fe7e45835a0ec7b7aeb768d271fb421ea0
with:
target: solidity
slither-config: solidity/slither.config.json