Change HostEnsureCanCompileStrings
to the new spec (#3690)
#326
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: 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: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1.0.7 | |
with: | |
toolchain: stable | |
override: true | |
profile: minimal | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: tarpaulin | |
- name: Install cargo-tarpaulin | |
uses: baptiste0928/cargo-install@v3.0.0 | |
with: | |
crate: cargo-tarpaulin | |
- name: Run tarpaulin | |
uses: actions-rs/cargo@v1 | |
with: | |
command: tarpaulin | |
args: --workspace --features annex-b,intl,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 | |
strategy: | |
matrix: | |
os: | |
- macos-latest | |
- windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1.0.7 | |
with: | |
toolchain: stable | |
override: true | |
profile: minimal | |
- 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,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,experimental | |
- name: Test docs | |
run: cargo test --doc --profile ci --features annex-b,intl,experimental | |
msrv: | |
name: MSRV | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
steps: | |
- 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 | |
- uses: actions-rs/toolchain@v1.0.7 | |
with: | |
toolchain: ${{ steps.rust_version.outputs.rust_version }} | |
override: true | |
profile: minimal | |
- name: Check compilation | |
run: cargo check --all-features --all-targets | |
fmt: | |
name: Formatting | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1.0.7 | |
with: | |
toolchain: stable | |
override: true | |
profile: minimal | |
components: rustfmt | |
- name: Format (rustfmt) | |
run: cargo fmt --all --check | |
clippy: | |
name: Lint | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1.0.7 | |
with: | |
toolchain: stable | |
override: true | |
profile: minimal | |
components: clippy | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: clippy | |
- name: Install cargo-workspaces | |
uses: actions-rs/install@v0.1 | |
with: | |
crate: 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: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1.0.7 | |
with: | |
toolchain: stable | |
override: true | |
profile: minimal | |
- 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: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1.0.7 | |
with: | |
toolchain: stable | |
override: true | |
profile: minimal | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: build-fuzz | |
- name: Install cargo-fuzz | |
uses: actions-rs/install@v0.1 | |
with: | |
crate: cargo-fuzz | |
version: latest | |
- 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: | |
- uses: actions/checkout@v4 | |
- uses: actions-rs/toolchain@v1.0.7 | |
with: | |
toolchain: stable | |
override: true | |
profile: minimal | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
key: build-run-examples | |
- name: Install cargo-workspaces | |
uses: actions-rs/install@v0.1 | |
with: | |
crate: 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' |