refactor(tests): Improve test structure and implement lowering test #39010
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
merge_group: | |
types: [ checks_requested ] | |
jobs: | |
ensure-no_std: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly-2024-11-23 | |
targets: wasm32-unknown-unknown | |
- uses: Swatinem/rust-cache@v2 | |
- run: | | |
cd ensure-no_std && cargo build | |
parallel-tests: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
cmd: | |
- test --profile=ci-dev -p cairo-lang-casm --features=serde,parity-scale-codec,schemars | |
- test --profile=ci-dev -p cairo-lang-casm --no-default-features --features=serde,parity-scale-codec | |
- test --profile=ci-dev -p cairo-lang-compiler | |
- test --profile=ci-dev -p cairo-lang-debug | |
- test --profile=ci-dev -p cairo-lang-defs | |
- test --profile=ci-dev -p cairo-lang-diagnostics | |
- test --profile=ci-dev -p cairo-lang-doc | |
- test --profile=ci-dev -p cairo-lang-eq-solver | |
- test --profile=ci-dev -p cairo-lang-executable | |
- test --profile=ci-dev -p cairo-lang-filesystem | |
- test --profile=ci-dev -p cairo-lang-formatter | |
- test --profile=ci-dev -p cairo-lang-lowering | |
- test --profile=ci-dev -p cairo-lang-parser | |
- test --profile=ci-dev -p cairo-lang-plugins | |
- test --profile=ci-dev -p cairo-lang-proc-macros | |
- test --profile=ci-dev -p cairo-lang-project | |
- test --profile=ci-dev -p cairo-lang-runnable-utils | |
- test --profile=ci-dev -p cairo-lang-runner | |
- test --profile=ci-dev -p cairo-lang-semantic | |
- test --profile=ci-dev -p cairo-lang-sierra | |
- test --profile=ci-dev -p cairo-lang-sierra-ap-change | |
- test --profile=ci-dev -p cairo-lang-sierra-gas | |
- test --profile=ci-dev -p cairo-lang-sierra-generator | |
- test --profile=ci-dev -p cairo-lang-sierra-to-casm | |
- test --profile=ci-dev -p cairo-lang-sierra-type-size | |
- test --profile=ci-dev -p cairo-lang-starknet-classes | |
- test --profile=ci-dev -p cairo-lang-starknet | |
- test --profile=ci-dev -p cairo-lang-syntax | |
- test --profile=ci-dev -p cairo-lang-syntax-codegen | |
- test --profile=ci-dev -p cairo-lang-test-plugin | |
- test --profile=ci-dev -p cairo-lang-test-runner | |
- test --profile=ci-dev -p cairo-lang-test-utils | |
- test --profile=ci-dev -p cairo-lang-utils --features=serde,parity-scale-codec,schemars,testing,env_logger | |
- test --profile=ci-dev -p cairo-lang-utils --no-default-features --features=serde,parity-scale-codec | |
- test --profile=ci-dev -p cairo-lang-primitive-token | |
- test --profile=ci-dev -p tests | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
components: rustfmt | |
toolchain: nightly-2024-11-23 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
# Validates that the number of commands in the matrix is equal to the number of crates in the | |
# workspace + 2 (for the crates which have multiple commands) | |
- run: | | |
CRATES_COUNT=$(find {crates/*,tests}/Cargo.toml | wc -l) | |
COMMANDS_COUNT=${{ strategy.job-total }} | |
if [ $((CRATES_COUNT + 2)) -ne $COMMANDS_COUNT ]; then | |
echo "CRATES_COUNT: $CRATES_COUNT" | |
echo "COMMANDS_COUNT: $COMMANDS_COUNT" | |
echo "The number of commands in the matrix is not equal to the number of crates in the workspace + 2" | |
exit 1 | |
fi | |
- run: | | |
cargo ${{ matrix.cmd }} | |
test: | |
if: ${{ always() }} | |
needs: parallel-tests | |
runs-on: ubuntu-latest | |
steps: | |
- if: needs.parallel-tests.result == 'success' | |
run: exit 0 | |
- if: needs.parallel-tests.result != 'success' | |
run: exit 1 | |
rustfmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
components: rustfmt | |
toolchain: nightly-2024-11-23 | |
- uses: Swatinem/rust-cache@v2 | |
- run: scripts/rust_fmt.sh --check | |
# Checks all .cairo files in the repo are formatted correctly. | |
cairofmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
- run: scripts/cairo_fmt.sh --check | |
# Checks all cairo corelib tests run correctly. | |
cairotest: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
- run: scripts/cairo_test.sh | |
- run: scripts/starknet_test.sh | |
# Check for unnecessary dependencies. | |
udeps: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Machete | |
uses: bnjbvr/cargo-machete@main | |
clippy: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
components: clippy | |
toolchain: nightly-2024-11-23 | |
- uses: Swatinem/rust-cache@v2 | |
- run: > | |
scripts/clippy.sh | |
typos: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: crate-ci/[email protected] | |
docs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly-2024-11-23 | |
- uses: Swatinem/rust-cache@v2 | |
- run: > | |
scripts/docs.sh | |
sierra-updated-check: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: '0' | |
- run: > | |
scripts/sierra_update_check.sh origin/$GITHUB_BASE_REF origin/$GITHUB_HEAD_REF |