252 lines
7.5 KiB
YAML
252 lines
7.5 KiB
YAML
on: [push, pull_request]
|
|
|
|
name: Rust
|
|
|
|
env:
|
|
RUSTFLAGS: -D warnings
|
|
RUSTDOCFLAGS: -D warnings
|
|
NIGHTLY_VERSION: nightly-2024-09-11
|
|
|
|
jobs:
|
|
fmt-crank-check-test:
|
|
name: Format + check + test
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
lfs: true
|
|
|
|
- uses: dtolnay/rust-toolchain@master
|
|
with:
|
|
toolchain: 1.80.0
|
|
|
|
- name: Install packages (Linux)
|
|
if: runner.os == 'Linux'
|
|
uses: awalsh128/cache-apt-pkgs-action@v1.4.2
|
|
with:
|
|
packages: libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev libgtk-3-dev # libgtk-3-dev is used by rfd
|
|
version: 1.0
|
|
execute_install_scripts: true
|
|
|
|
- name: Set up cargo cache
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
- name: Rustfmt
|
|
run: cargo fmt --all -- --check
|
|
|
|
- name: Lint vertical spacing
|
|
run: ./scripts/lint.py
|
|
|
|
- name: check --all-features
|
|
run: cargo check --locked --all-features --all-targets
|
|
|
|
- name: check egui_extras --all-features
|
|
run: cargo check --locked --all-features -p egui_extras
|
|
|
|
- name: check default features
|
|
run: cargo check --locked --all-targets
|
|
|
|
- name: check --no-default-features
|
|
run: cargo check --locked --no-default-features --lib --all-targets
|
|
|
|
- name: check eframe --no-default-features
|
|
run: cargo check --locked --no-default-features --features x11 --lib -p eframe
|
|
|
|
- name: check egui_extras --no-default-features
|
|
run: cargo check --locked --no-default-features --lib -p egui_extras
|
|
|
|
- name: check epaint --no-default-features
|
|
run: cargo check --locked --no-default-features --lib -p epaint
|
|
|
|
# Regression test for https://github.com/emilk/egui/issues/4771
|
|
- name: cargo check -p test_egui_extras_compilation
|
|
run: cargo check -p test_egui_extras_compilation
|
|
|
|
- name: cargo doc --lib
|
|
run: cargo doc --lib --no-deps --all-features
|
|
|
|
- name: cargo doc --document-private-items
|
|
run: cargo doc --document-private-items --no-deps --all-features
|
|
|
|
- name: clippy
|
|
run: cargo clippy --all-targets --all-features -- -D warnings
|
|
|
|
- name: clippy release
|
|
run: cargo clippy --all-targets --all-features --release -- -D warnings
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
check_wasm:
|
|
name: Check wasm32 + wasm-bindgen
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@master
|
|
with:
|
|
toolchain: 1.80.0
|
|
targets: wasm32-unknown-unknown
|
|
|
|
- run: sudo apt-get update && sudo apt-get install libgtk-3-dev libatk1.0-dev
|
|
|
|
- name: Set up cargo cache
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
- name: Check wasm32 egui_demo_app
|
|
run: cargo check -p egui_demo_app --lib --target wasm32-unknown-unknown
|
|
|
|
- name: Check wasm32 egui_demo_app --all-features
|
|
run: cargo check -p egui_demo_app --lib --target wasm32-unknown-unknown --all-features
|
|
|
|
- name: Check wasm32 eframe
|
|
run: cargo check -p eframe --lib --no-default-features --features glow,persistence --target wasm32-unknown-unknown
|
|
|
|
- name: wasm-bindgen
|
|
uses: jetli/wasm-bindgen-action@v0.1.0
|
|
with:
|
|
version: "0.2.95"
|
|
|
|
- run: ./scripts/wasm_bindgen_check.sh --skip-setup
|
|
|
|
- name: clippy wasm32
|
|
run: ./scripts/clippy_wasm.sh
|
|
|
|
# requires a different toolchain from the other checks (nightly)
|
|
check_wasm_atomics:
|
|
name: Check wasm32+atomics
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- run: sudo apt-get update && sudo apt-get install libgtk-3-dev libatk1.0-dev
|
|
|
|
- name: Set up cargo cache
|
|
uses: Swatinem/rust-cache@v2
|
|
- uses: dtolnay/rust-toolchain@master
|
|
with:
|
|
toolchain: ${{env.NIGHTLY_VERSION}}
|
|
targets: wasm32-unknown-unknown
|
|
components: rust-src
|
|
|
|
- name: Check wasm32+atomics eframe with wgpu
|
|
run: RUSTFLAGS='-C target-feature=+atomics' cargo +${{env.NIGHTLY_VERSION}} check -p eframe --lib --no-default-features --features wgpu --target wasm32-unknown-unknown -Z build-std=std,panic_abort
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
cargo-deny:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- target: aarch64-apple-darwin
|
|
- target: aarch64-linux-android
|
|
- target: i686-pc-windows-gnu
|
|
- target: i686-pc-windows-msvc
|
|
- target: i686-unknown-linux-gnu
|
|
- target: wasm32-unknown-unknown
|
|
- target: x86_64-apple-darwin
|
|
- target: x86_64-pc-windows-gnu
|
|
- target: x86_64-pc-windows-msvc
|
|
- target: x86_64-unknown-linux-gnu
|
|
- target: x86_64-unknown-linux-musl
|
|
- target: x86_64-unknown-redox
|
|
|
|
name: cargo-deny ${{ matrix.target }}
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: EmbarkStudios/cargo-deny-action@v1
|
|
with:
|
|
rust-version: "1.80.0"
|
|
log-level: error
|
|
command: check
|
|
arguments: --target ${{ matrix.target }}
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
android:
|
|
name: android
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: dtolnay/rust-toolchain@master
|
|
with:
|
|
toolchain: 1.80.0
|
|
targets: aarch64-linux-android
|
|
|
|
- name: Set up cargo cache
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
- run: cargo check --features wgpu,android-native-activity --target aarch64-linux-android
|
|
working-directory: crates/eframe
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
ios:
|
|
name: ios
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: dtolnay/rust-toolchain@master
|
|
with:
|
|
toolchain: 1.80.0
|
|
targets: aarch64-apple-ios
|
|
|
|
- name: Set up cargo cache
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
# Default features are disabled because glutin doesn't compile for ios.
|
|
- run: cargo check --features wgpu --target aarch64-apple-ios --no-default-features
|
|
working-directory: crates/eframe
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
windows:
|
|
name: Check Windows
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@master
|
|
with:
|
|
toolchain: 1.80.0
|
|
|
|
- name: Set up cargo cache
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
- name: Check all
|
|
run: cargo check --all-targets --all-features
|
|
|
|
- name: Check hello_world
|
|
run: cargo check -p hello_world
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
tests:
|
|
name: Run tests
|
|
# We run the tests on macOS because it will run with a actual GPU
|
|
runs-on: macos-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
lfs: true
|
|
- uses: dtolnay/rust-toolchain@master
|
|
with:
|
|
toolchain: 1.80.0
|
|
|
|
- name: Set up cargo cache
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
- name: Run tests
|
|
run: cargo test --all-features
|
|
|
|
- name: Run doc-tests
|
|
run: cargo test --all-features --doc
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: test-results
|
|
path: "**/tests/snapshots"
|