name: CI
on:
push:
pull_request:
env:
CARGO_TERM_COLOR: always
jobs:
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo fmt --all -- --check
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- run: cargo clippy --all-targets --all-features -- -D warnings
msrv:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.71"
- run: cargo test --all-targets --all-features --locked
- run: cargo test --doc --locked
latest:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
env:
CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS: allow
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo update
- run: cargo test --all-targets --all-features
- run: cargo test --doc
compile-fail:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.71"
- run: cargo test --test compile_fail --locked
env:
ASYNC_RUNTIME_RUN_UI: "1"
mobile-check:
strategy:
matrix:
include:
- os: ubuntu-latest
target: aarch64-linux-android
- os: macos-latest
target: aarch64-apple-ios
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.71"
targets: ${{ matrix.target }}
- run: cargo check --lib --target ${{ matrix.target }} --locked
android-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.71"
targets: x86_64-linux-android
- name: Configure Android NDK tools
shell: bash
run: |
ndk_root="${ANDROID_NDK_LATEST_HOME:-$ANDROID_NDK_HOME}"
echo "CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=$ndk_root/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang" >> "$GITHUB_ENV"
echo "CARGO_TARGET_X86_64_LINUX_ANDROID_RUNNER=bash .github/scripts/run-android-test.sh" >> "$GITHUB_ENV"
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
| sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Run core tests in Android emulator
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 35
arch: x86_64
disable-animations: true
script: >-
cargo test --target x86_64-linux-android --locked
--lib
--test general
--test priority
--test local
--test cross_domain
--test task
--test shutdown
--test async_io
ios-simulator-link:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.71"
targets: aarch64-apple-ios-sim
- name: Build and link tests for iOS Simulator
run: >-
cargo test --lib --tests --target aarch64-apple-ios-sim
--locked --no-run
miri:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: miri
- run: cargo miri setup
- run: cargo miri test --lib worker::tests::default_selector_is_exactly_eight_four_one