Skip to content

Extend WgpuSetup, make egui_kittest wgpu setup configurable & prefer software rasterizers for testing #13707

Extend WgpuSetup, make egui_kittest wgpu setup configurable & prefer software rasterizers for testing

Extend WgpuSetup, make egui_kittest wgpu setup configurable & prefer software rasterizers for testing #13707

Workflow file for this run

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/[email protected]
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/[email protected]
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
# TODO(lucasmerlin): Enable --all-features (currently this breaks the rendering in the tests because of the `unity` feature)
run: cargo test
- name: Run doc-tests
# TODO(lucasmerlin): Enable --all-features (currently this breaks the rendering in the tests because of the `unity` feature)
run: cargo test --doc
- name: Upload artifacts
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results
path: "**/tests/snapshots"