Run tests on iOS using Mac Catalyst #118
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
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
name: CI | |
permissions: | |
contents: read | |
jobs: | |
clippy: | |
name: Clippy ${{ matrix.rust }} / ${{ matrix.triple.target }} | |
runs-on: ${{ matrix.triple.os }} | |
strategy: | |
matrix: | |
# Borrowed from https://github.com/GuillaumeGomez/sysinfo/blob/master/.github/workflows/CI.yml#L45 | |
triple: | |
- { os: 'ubuntu-latest', target: 'x86_64-unknown-linux-gnu', cross: false } | |
- { os: 'ubuntu-latest', target: 'i686-unknown-linux-gnu', cross: true } | |
# `macos-latest` is now using macOS 14 and ARM64. Future runners will also | |
# be ARM64: https://github.com/actions/runner-images/issues/9741 | |
- { os: 'macos-latest', target: 'x86_64-apple-darwin', cross: false, always_install_target: true } | |
- { os: 'macos-latest', target: 'aarch64-apple-darwin', cross: false } | |
- { os: 'windows-latest', target: 'x86_64-pc-windows-msvc', cross: false } | |
# iOS | |
- { os: 'macos-latest', target: 'aarch64-apple-ios', cross: true } | |
- { os: 'macos-latest', target: 'x86_64-apple-ios', cross: true } | |
## ARM64 | |
- { os: 'ubuntu-latest', target: 'aarch64-unknown-linux-gnu', cross: true } | |
- { os: 'ubuntu-latest', target: 'aarch64-unknown-linux-musl', cross: true } | |
## ARMv7 | |
- { os: 'ubuntu-latest', target: 'armv7-unknown-linux-gnueabihf', cross: true } | |
- { os: 'ubuntu-latest', target: 'armv7-unknown-linux-musleabihf', cross: true } | |
## ARMv6 | |
- { os: 'ubuntu-latest', target: 'arm-unknown-linux-gnueabihf', cross: true } | |
- { os: 'ubuntu-latest', target: 'arm-unknown-linux-musleabihf', cross: true } | |
# Android | |
- { os: 'ubuntu-latest', target: 'aarch64-linux-android', cross: true } | |
- { os: 'ubuntu-latest', target: 'armv7-linux-androideabi', cross: true } | |
- { os: 'ubuntu-latest', target: 'x86_64-linux-android', cross: true } | |
- { os: 'ubuntu-latest', target: 'i686-linux-android', cross: true } | |
# WASM | |
- { os: 'ubuntu-latest', target: 'wasm32-unknown-unknown', cross: false, always_install_target: true } | |
rust: | |
- stable | |
# MSRV | |
- 1.56.0 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
persist-credentials: false | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ matrix.rust }} | |
components: clippy | |
- name: Install cross-target | |
if: matrix.triple.cross || matrix.triple.always_install_target | |
run: rustup target add ${{ matrix.triple.target }} | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: clippy | |
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml -- -D clippy::dbg_macro -D warnings -D missing_docs -F unused_must_use | |
use-cross: ${{ matrix.triple.cross }} | |
test: | |
name: Test Desktop OSes | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-latest | |
- windows-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
persist-credentials: false | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
test_ios: | |
name: "Test iOS (Catalyst)" | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
persist-credentials: false | |
- name: Run iOS tests | |
run: | | |
rustup target add aarch64-apple-ios-macabi | |
cargo test --target aarch64-apple-ios-macabi | |
test_wasm: | |
name: Test wasm32-unknown-unknown | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
persist-credentials: false | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
- name: Install wasm-pack | |
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh | |
- name: Test wasm32 | |
run: | | |
rustup target add wasm32-unknown-unknown | |
wasm-pack test --firefox --headless -- --features "js" | |
test_fallback: | |
name: Check fallback implementation | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
persist-credentials: false | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
- name: "Clippy" | |
# Install a target that is obviously not supported and then check it to ensure | |
# the fallback target stays in sync with the other platforms. | |
run: | | |
rustup target add x86_64-unknown-none | |
cargo clippy --target x86_64-unknown-none -- -D clippy::dbg_macro -D warnings -D missing_docs -F unused_must_use | |
fmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
persist-credentials: false | |
- uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
components: rustfmt | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check |