Skip to content

CI

CI #10049

Workflow file for this run

name: CI
on:
pull_request:
merge_group:
push:
branches:
- master
workflow_dispatch:
jobs:
test-forge-unit-and-integration:
name: Test Forge / Unit and Integration Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- uses: software-mansion/setup-scarb@v1
- uses: software-mansion/setup-universal-sierra-compiler@v1
- run: cargo test --release --lib -p forge
- run: cargo test --release --bin snforge
- run: cargo test --release integration -p forge
build-test-forge-e2e-nextest-archive:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- name: Install nextest
uses: taiki-e/install-action@nextest
- name: Build and archive tests
run: cargo nextest archive --release -p forge --archive-file nextest-archive.tar.zst
- name: Upload archive to workflow
uses: actions/upload-artifact@v4
with:
name: nextest-archive
path: nextest-archive.tar.zst
test-forge-e2e:
name: Test Forge / E2E Tests
runs-on: ubuntu-latest
needs: build-test-forge-e2e-nextest-archive
strategy:
matrix:
partition: [ 1, 2, 3, 4, 5, 6, 7, 8 ]
steps:
- name: Extract branch name
if: github.event_name != 'pull_request'
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV
- name: Extract branch name on pull request
if: github.event_name == 'pull_request'
run: echo "BRANCH_NAME=$(echo $GITHUB_HEAD_REF)" >> $GITHUB_ENV
- name: Extract repo name and owner
if: github.event_name != 'pull_request'
run: echo "REPO_NAME=$(echo ${{ github.repository }}.git)" >> $GITHUB_ENV
- name: Extract repo name and owner on pull request
if: github.event_name == 'pull_request'
run: echo "REPO_NAME=$(echo ${{ github.event.pull_request.head.repo.full_name }}.git)" >> $GITHUB_ENV
- name: Print repo name
run: echo 'The repo name is' $REPO_NAME
- name: Get branch name
run: echo 'The branch name is' $BRANCH_NAME
- name: Install cairo-profiler
run: |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-profiler/main/scripts/install.sh | sh
- name: Install cairo-coverage
run: |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-coverage/main/scripts/install.sh | sh
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- uses: software-mansion/setup-scarb@v1
- uses: software-mansion/setup-universal-sierra-compiler@v1
- uses: taiki-e/install-action@nextest
- uses: actions/download-artifact@v4
with:
name: nextest-archive
- name: nextest partition ${{ matrix.partition }}/8
run: cargo nextest run --partition 'count:${{ matrix.partition }}/8' --archive-file 'nextest-archive.tar.zst' e2e
test-coverage:
name: Test coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- uses: software-mansion/setup-scarb@v1
with:
scarb-version: "2.8.3"
- uses: software-mansion/setup-universal-sierra-compiler@v1
- name: Install cairo-coverage
run: |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-coverage/main/scripts/install.sh | sh
- run: cargo test --package forge --features scarb_2_8_3 --test main e2e::coverage
test-contracts-artifacts:
name: Test contracts artifacts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- uses: software-mansion/setup-scarb@v1
with:
scarb-version: "2.8.3"
- uses: software-mansion/setup-universal-sierra-compiler@v1
- run: |
cargo test --package forge --features scarb_2_8_3 e2e::contract_artifacts
- run: |
cargo test --package forge --features scarb_2_8_3 e2e::features
- run: |
cargo test --package scarb-api --features scarb_2_8_3 get_starknet_artifacts_path
test-forge-runner:
name: Test Forge Runner
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- run: cargo test --release -p forge_runner
test-cheatnet:
name: Test Cheatnet
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- uses: software-mansion/setup-scarb@v1
- uses: software-mansion/setup-universal-sierra-compiler@v1
- name: Run Cheatnet tests
run: cargo test --release -p cheatnet
test-data-transformer:
name: Test Data Transformer
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- name: Run Data Transformer tests
run: cargo test --release -p data-transformer
test-forge-scarb-plugin:
name: Test Forge Scarb Plugin
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- uses: software-mansion/setup-scarb@v1
- uses: software-mansion/setup-universal-sierra-compiler@v1
- name: Run Forge Scarb Plugin tests
run: cargo test --release -p snforge_scarb_plugin
test-cast:
name: Test Cast
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a
with:
toolchain: stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- name: Install starknet-devnet-rs
run: ./scripts/install_devnet.sh
- uses: software-mansion/setup-scarb@v1
with:
scarb-version: "2.7.0"
- uses: software-mansion/setup-universal-sierra-compiler@v1
- name: Run tests
run: cargo test --release -p sncast
- name: Run test in debug profile
run: cargo test -p sncast test_happy_case_common_arguments_after_subcommand
test-conversions:
name: Test Conversions
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a
with:
toolchain: stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- name: Run tests
run: cargo test --release -p conversions
test-shared:
name: Test Shared
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- run: cargo test --release -p shared
test-scarb-api:
name: Test Scarb Api
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: software-mansion/setup-universal-sierra-compiler@v1
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- uses: software-mansion/setup-scarb@v1
- uses: software-mansion/setup-universal-sierra-compiler@v1
- run: cargo test --release -p scarb-api
scarbfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: software-mansion/setup-scarb@v1
- name: Check cairo files format
run: |
output=$(find . -type f -name "Scarb.toml" -execdir sh -c '
echo "Running \"scarb fmt\" in directory: $PWD"
scarb fmt --check
' \;)
echo "$output"
if grep -iq "Diff" <<< "$output"; then
exit 1
fi
exit 0
rustfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a
with:
toolchain: stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- name: Check formatting
run: cargo fmt --check
clippy:
runs-on: ubuntu-latest
env:
# Make sure CI fails on all warnings - including Clippy lints.
RUSTFLAGS: "-Dwarnings"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a
with:
toolchain: stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- run: cargo lint
build-docs:
name: Test Building Docs
runs-on: ubuntu-latest
env:
MDBOOK_VERSION: 0.4.31
steps:
- uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a
with:
toolchain: stable
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab
- uses: actions/checkout@v4
- uses: software-mansion/setup-scarb@v1
- uses: software-mansion/setup-universal-sierra-compiler@v1
- name: Install mdBook
run: |
cargo install --version ${MDBOOK_VERSION} mdbook
- name: Install mdBook Link-Check
run: |
cargo install mdbook-linkcheck
- name: Build with mdBook
run: mdbook build
working-directory: ./docs
- name: Install Forge
run: |
cargo install --path crates/forge --locked
- name: Verify Cairo listings
run: |
./scripts/verify_cairo_listings.sh
typos:
name: Check typos
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: typos-action
uses: crate-ci/[email protected]