Skip to content

Code cleanup

Code cleanup #2293

Workflow file for this run

on:
pull_request:
name: CI
# If a new push on the PR is done, cancel the build
concurrency:
group: ${{ github.head_ref }}
cancel-in-progress: true
jobs:
rustfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: rustfmt
- run: cargo fmt -- --check
- name: test that all source files are covered by rustfmt
run: |
for f in $(find src/ -name '*.rs'); do echo -e '\n\n\n\n\n' >> $f; done
cargo fmt
git diff --exit-code # expect all changes from above wiped away
clippy:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly
components: clippy
- run: cargo clippy --all-targets --features serde -- -D warnings
check:
name: Check ${{ matrix.toolchain }} / ${{ matrix.triple.target }}
runs-on: ${{ matrix.triple.os }}
strategy:
fail-fast: false
matrix:
triple:
- { os: 'ubuntu-latest', target: 'x86_64-unknown-linux-gnu', cross: false }
- { os: 'ubuntu-latest', target: 'i686-unknown-linux-gnu', cross: true }
- { os: 'macos-latest', target: 'x86_64-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 }
toolchain:
- "1.74.0" # minimum supported rust version
- stable
- nightly
steps:
- uses: actions/checkout@v4
- name: Install toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.toolchain }}
- name: Install cross-target
run: rustup target add ${{ matrix.triple.target }}
- name: Check
uses: ClementTsang/[email protected]
with:
command: rustc
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml
use-cross: ${{ matrix.triple.cross }}
- name: Check debug feature
uses: ClementTsang/[email protected]
with:
command: rustc
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --features=debug
use-cross: ${{ matrix.triple.cross }}
- name: Check debug feature
uses: ClementTsang/[email protected]
with:
command: rustc
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features --features=debug
use-cross: ${{ matrix.triple.cross }}
- name: Check serde feature
uses: ClementTsang/[email protected]
with:
command: rustc
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --features=serde
use-cross: ${{ matrix.triple.cross }}
- name: Check serde feature
uses: ClementTsang/[email protected]
with:
command: rustc
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features --features=serde
use-cross: ${{ matrix.triple.cross }}
- name: Check debug/serde feature (system)
uses: ClementTsang/[email protected]
with:
command: rustc
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features --features=debug,serde,system
use-cross: ${{ matrix.triple.cross }}
- name: Check debug/serde feature (disk)
uses: ClementTsang/[email protected]
with:
command: rustc
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features --features=debug,serde,disk
use-cross: ${{ matrix.triple.cross }}
- name: Check debug/serde feature (component)
uses: ClementTsang/[email protected]
with:
command: rustc
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features --features=debug,serde,component
use-cross: ${{ matrix.triple.cross }}
- name: Check debug/serde feature (network)
uses: ClementTsang/[email protected]
with:
command: rustc
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features --features=debug,serde,network
use-cross: ${{ matrix.triple.cross }}
- name: Check debug/serde feature (user)
uses: ClementTsang/[email protected]
with:
command: rustc
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features --features=debug,serde,user
use-cross: ${{ matrix.triple.cross }}
- name: Check without multithreading
uses: ClementTsang/[email protected]
with:
command: check
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features
use-cross: ${{ matrix.triple.cross }}
- name: Check features (system)
uses: ClementTsang/[email protected]
with:
command: check
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features --features system
use-cross: ${{ matrix.triple.cross }}
- name: Check features (disk)
uses: ClementTsang/[email protected]
with:
command: check
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features --features disk
use-cross: ${{ matrix.triple.cross }}
- name: Check features (component)
uses: ClementTsang/[email protected]
with:
command: check
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features --features component
use-cross: ${{ matrix.triple.cross }}
- name: Check features (network)
uses: ClementTsang/[email protected]
with:
command: check
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features --features network
use-cross: ${{ matrix.triple.cross }}
- name: Check features (user)
uses: ClementTsang/[email protected]
with:
command: check
args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features --features user
use-cross: ${{ matrix.triple.cross }}
- name: Check example
uses: ClementTsang/[email protected]
with:
command: check
args: --target=${{ matrix.triple.target }} --example simple
use-cross: ${{ matrix.triple.cross }}
- name: Check (Apple app store restrictions)
if: matrix.triple.os == 'macos-latest'
uses: ClementTsang/[email protected]
with:
command: check
args: --features apple-sandbox --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml
use-cross: ${{ matrix.triple.cross }}
- name: Check without multithreading (Apple app store restrictions)
if: matrix.triple.os == 'macos-latest'
uses: ClementTsang/[email protected]
with:
command: check
args: --features apple-sandbox --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml --no-default-features
use-cross: ${{ matrix.triple.cross }}
tests:
needs: [check]
name: Test ${{ matrix.os }} (rust ${{matrix.toolchain}})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
toolchain:
- "1.74.0" # minimum supported rust version
- stable
- nightly
steps:
- uses: actions/checkout@v4
- name: Install toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.toolchain }}
- name: Check docs
run: cargo rustdoc -- -Z unstable-options --generate-link-to-definition
if: matrix.toolchain == 'nightly'
- name: Check docs with serde
run: cargo rustdoc --features serde -- -Z unstable-options --generate-link-to-definition
if: matrix.toolchain == 'nightly'
- name: Execute tests (not mac)
run: cargo test
if: matrix.os != 'macos-latest'
env:
RUST_BACKTRACE: full
- name: Execute tests (mac)
run: cargo test -- --test-threads 1
if: matrix.os == 'macos-latest'
env:
RUST_BACKTRACE: full
APPLE_CI: 1 # FIXME: remove this once CI mac tests are fixed
- name: Execute tests (not mac, no features)
run: cargo test --no-default-features
if: matrix.os != 'macos-latest'
env:
RUST_BACKTRACE: full
- name: Execute tests (mac, no features)
run: cargo test --no-default-features -- --test-threads 1
if: matrix.os == 'macos-latest'
env:
RUST_BACKTRACE: full
APPLE_CI: 1 # FIXME: remove this once CI mac tests are fixed
- name: Run CPU test
run: cargo test --lib -- --ignored --test-threads 1
env:
RUST_BACKTRACE: full
- name: Check serde feature
run: |
cargo check --features serde
cargo test --features serde --doc
env:
RUST_BACKTRACE: full
c_interface:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- run: make
unknown-targets:
runs-on: ubuntu-latest
strategy:
matrix:
toolchain:
- "1.74.0" # minimum supported rust version
- stable
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.toolchain }}
components: clippy
- run: cargo clippy --features unknown-ci -- -D warnings
- run: cargo check --features unknown-ci
- run: cargo test --features unknown-ci
- run: cargo install wasm-pack
if: matrix.toolchain == 'stable'
- run: cd test-unknown && wasm-pack build --target web
if: matrix.toolchain == 'stable'