mirror of https://github.com/boa-dev/boa.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
221 lines
5.8 KiB
221 lines
5.8 KiB
name: Continuous integration |
|
|
|
on: |
|
pull_request: |
|
branches: |
|
- main |
|
push: |
|
branches: |
|
- main |
|
merge_group: |
|
types: [checks_requested] |
|
|
|
env: |
|
RUSTFLAGS: -Dwarnings |
|
|
|
jobs: |
|
coverage: |
|
name: Coverage |
|
runs-on: ubuntu-latest |
|
timeout-minutes: 60 |
|
steps: |
|
- name: Checkout repository |
|
uses: actions/checkout@v4 |
|
|
|
- name: Install Rust toolchain |
|
uses: dtolnay/rust-toolchain@stable |
|
with: |
|
toolchain: stable |
|
|
|
- uses: Swatinem/rust-cache@v2 |
|
with: |
|
key: tarpaulin |
|
- name: Install cargo-tarpaulin |
|
uses: baptiste0928/cargo-install@v3.1.0 |
|
with: |
|
crate: cargo-tarpaulin |
|
|
|
- name: Run tarpaulin |
|
run: cargo tarpaulin --workspace --features annex-b,intl_bundled,experimental --ignore-tests --engine llvm --out xml |
|
|
|
- name: Upload to codecov.io |
|
uses: codecov/codecov-action@v4 |
|
|
|
tests: |
|
name: Test |
|
runs-on: ${{ matrix.os }} |
|
timeout-minutes: 60 |
|
env: |
|
RUSTUP_WINDOWS_PATH_ADD_BIN: 1 |
|
strategy: |
|
matrix: |
|
os: |
|
- macos-latest |
|
- windows-latest |
|
steps: |
|
- name: Checkout repository |
|
uses: actions/checkout@v4 |
|
|
|
- name: Install Rust toolchain |
|
uses: dtolnay/rust-toolchain@stable |
|
with: |
|
toolchain: stable |
|
|
|
- uses: Swatinem/rust-cache@v2 |
|
- name: Build tests |
|
run: cargo test --no-run --profile ci |
|
# this order is faster according to rust-analyzer |
|
- name: Build |
|
run: cargo build --all-targets --quiet --profile ci --features annex-b,intl_bundled,experimental |
|
- name: Install latest nextest |
|
uses: taiki-e/install-action@nextest |
|
- name: Test with nextest |
|
run: cargo nextest run --profile ci --cargo-profile ci --features annex-b,intl_bundled,experimental |
|
- name: Test docs |
|
run: cargo test --doc --profile ci --features annex-b,intl_bundled,experimental |
|
|
|
msrv: |
|
name: MSRV |
|
runs-on: ubuntu-latest |
|
timeout-minutes: 60 |
|
steps: |
|
- name: Checkout repository |
|
uses: actions/checkout@v4 |
|
|
|
# Get the rust_version from the Cargo.toml |
|
- name: Get rust_version |
|
id: rust_version |
|
run: echo "rust_version=$(grep '^rust-version' Cargo.toml | cut -d' ' -f3 | tr -d '"')" >> $GITHUB_OUTPUT |
|
|
|
- name: Install Rust toolchain |
|
uses: dtolnay/rust-toolchain@stable |
|
with: |
|
toolchain: ${{ steps.rust_version.outputs.rust_version }} |
|
|
|
- name: Check compilation |
|
run: cargo check --all-features --all-targets |
|
|
|
fmt: |
|
name: Formatting |
|
runs-on: ubuntu-latest |
|
timeout-minutes: 60 |
|
steps: |
|
- name: Checkout repository |
|
uses: actions/checkout@v4 |
|
|
|
- name: Install Rust toolchain |
|
uses: dtolnay/rust-toolchain@stable |
|
with: |
|
toolchain: stable |
|
components: rustfmt |
|
|
|
- name: Format (rustfmt) |
|
run: cargo fmt --all --check |
|
|
|
clippy: |
|
name: Lint |
|
runs-on: ubuntu-latest |
|
timeout-minutes: 60 |
|
steps: |
|
- name: Checkout repository |
|
uses: actions/checkout@v4 |
|
|
|
- name: Install Rust toolchain |
|
uses: dtolnay/rust-toolchain@stable |
|
with: |
|
toolchain: stable |
|
components: clippy |
|
|
|
- uses: Swatinem/rust-cache@v2 |
|
with: |
|
key: clippy |
|
|
|
- name: Install cargo-workspaces |
|
run: cargo install cargo-workspaces |
|
|
|
- name: Clippy (All features) |
|
run: cargo workspaces exec cargo clippy --all-features --all-targets |
|
- name: Clippy (No features) |
|
run: cargo workspaces exec cargo clippy --no-default-features --all-targets |
|
- name: Clippy (Intl) |
|
run: cargo clippy -p boa_engine --features intl |
|
- name: Clippy (Annex-B) |
|
run: cargo clippy -p boa_engine --features annex-b |
|
- name: Clippy (Experimental) |
|
run: cargo clippy -p boa_engine --features experimental |
|
|
|
docs: |
|
name: Documentation |
|
runs-on: ubuntu-latest |
|
timeout-minutes: 60 |
|
env: |
|
RUSTDOCFLAGS: -D warnings |
|
steps: |
|
- name: Checkout repository |
|
uses: actions/checkout@v4 |
|
|
|
- name: Install Rust toolchain |
|
uses: dtolnay/rust-toolchain@stable |
|
with: |
|
toolchain: stable |
|
|
|
- uses: Swatinem/rust-cache@v2 |
|
with: |
|
key: docs |
|
- name: Generate documentation |
|
run: cargo doc -v --document-private-items --all-features |
|
|
|
build-fuzz: |
|
name: Fuzzing |
|
runs-on: ubuntu-latest |
|
timeout-minutes: 60 |
|
steps: |
|
- name: Checkout repository |
|
uses: actions/checkout@v4 |
|
|
|
- name: Install Rust toolchain |
|
uses: dtolnay/rust-toolchain@stable |
|
with: |
|
toolchain: stable |
|
|
|
- uses: Swatinem/rust-cache@v2 |
|
with: |
|
key: build-fuzz |
|
|
|
- name: Install cargo-fuzz |
|
run: cargo install cargo-fuzz |
|
|
|
- name: Build fuzz |
|
run: cd tests/fuzz && cargo fuzz build -s none --dev |
|
|
|
build-run-examples: |
|
name: Build & run examples |
|
runs-on: ubuntu-latest |
|
timeout-minutes: 60 |
|
steps: |
|
- name: Checkout repository |
|
uses: actions/checkout@v4 |
|
|
|
- name: Install Rust toolchain |
|
uses: dtolnay/rust-toolchain@stable |
|
with: |
|
toolchain: stable |
|
|
|
- uses: Swatinem/rust-cache@v2 |
|
with: |
|
key: build-run-examples |
|
|
|
- name: Install cargo-workspaces |
|
run: cargo install cargo-workspaces |
|
|
|
- name: Build (All features) |
|
run: cargo workspaces exec cargo build --all-features --all-targets --profile ci |
|
- name: Build (No features) |
|
run: cargo workspaces exec cargo build --no-default-features --all-targets --profile ci |
|
|
|
- name: Run examples |
|
run: | |
|
cd examples |
|
cargo run -p boa_examples --bin 2>&1 \ |
|
| grep -E '^ ' \ |
|
| xargs -n1 sh -c 'cargo run -p boa_examples --profile ci --bin $0 || exit 255'
|
|
|