Implement Debug for Context, Surface and Buffer (#268)
#696
This file contains hidden or 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
| name: CI | |
| on: | |
| pull_request: | |
| push: | |
| branches: [master] | |
| jobs: | |
| fmt: | |
| name: Tidy Code | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: hecrj/setup-rust-action@v2 | |
| with: | |
| rust-version: stable | |
| components: rustfmt | |
| - name: Check Formatting | |
| run: cargo +stable fmt --all -- --check | |
| - uses: taiki-e/install-action@v2 | |
| with: | |
| tool: typos-cli | |
| - name: Check Formatting | |
| run: cargo fmt --all -- --check | |
| - name: Run Typos | |
| run: typos | |
| tests: | |
| name: Tests | |
| needs: fmt | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| rust_version: ['1.71.0', stable, nightly] | |
| platform: | |
| - { target: x86_64-pc-windows-msvc, os: windows-latest, } | |
| - { target: i686-pc-windows-msvc, os: windows-latest, } | |
| # TODO: wait for https://github.com/microsoft/windows-rs/issues/2614#issuecomment-1684152597 | |
| # to be resolved before re-enabling these | |
| # - { target: x86_64-pc-windows-gnu, os: windows-latest, host: -x86_64-pc-windows-gnu } | |
| # - { target: i686-pc-windows-gnu, os: windows-latest, host: -i686-pc-windows-gnu } | |
| - { target: i686-unknown-linux-gnu, os: ubuntu-latest, } | |
| - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest, } | |
| - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest, options: --no-default-features, features: "x11,x11-dlopen" } | |
| - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest, options: --no-default-features, features: "wayland,wayland-dlopen" } | |
| - { target: x86_64-unknown-linux-gnu, os: ubuntu-latest, options: --no-default-features, features: "kms" } | |
| - { target: x86_64-unknown-redox, os: ubuntu-latest, } | |
| - { target: x86_64-unknown-freebsd, os: ubuntu-latest, } | |
| - { target: x86_64-unknown-netbsd, os: ubuntu-latest, options: --no-default-features, features: "x11,x11-dlopen,wayland,wayland-dlopen" } | |
| - { target: aarch64-apple-darwin, os: macos-latest, } | |
| - { target: wasm32-unknown-unknown, os: ubuntu-latest, } | |
| exclude: | |
| # Orbital doesn't follow MSRV | |
| - rust_version: '1.71.0' | |
| platform: { target: x86_64-unknown-redox, os: ubuntu-latest } | |
| include: | |
| - rust_version: nightly | |
| platform: { target: wasm32-unknown-unknown, os: ubuntu-latest, options: "-Zbuild-std=panic_abort,std", rustflags: "-Ctarget-feature=+atomics,+bulk-memory" } | |
| # Mac Catalyst is only Tier 2 since Rust 1.81 | |
| - rust_version: 'nightly' | |
| platform: { target: aarch64-apple-ios-macabi, os: macos-latest } | |
| env: | |
| RUST_BACKTRACE: 1 | |
| CARGO_INCREMENTAL: 0 | |
| RUSTFLAGS: "-C debuginfo=0 --deny warnings ${{ matrix.platform.rustflags }}" | |
| # Disable doc tests on Rust 1.83, since some path handling regressed there. | |
| # This has been fixed in Rust 1.84 beta. | |
| # https://github.com/rust-lang/rust/issues/132203 | |
| OPTIONS: ${{ matrix.platform.options }} ${{ matrix.rust_version == 'stable' && '--lib' || '' }} | |
| FEATURES: ${{ format(',{0}', matrix.platform.features ) }} | |
| CMD: ${{ matrix.platform.cmd }} | |
| RUSTDOCFLAGS: -Dwarnings | |
| runs-on: ${{ matrix.platform.os }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: taiki-e/install-action@v2 | |
| if: matrix.platform.target == 'wasm32-unknown-unknown' | |
| with: | |
| tool: wasm-bindgen-cli | |
| - name: Install nightly rust to generate `-Zminimal-versions` lockfile (for MSRV) | |
| if: matrix.rust_version == '1.71.0' | |
| uses: dtolnay/rust-toolchain@nightly | |
| - name: Pin deps that break MSRV | |
| if: matrix.rust_version == '1.71.0' | |
| # By downgrading all our dependency versions, we ensure that our minimum | |
| # version bounds are actually adequate (i.e. users can build `softbuffer` | |
| # with minimal versions themselves) and opt-out of any unexpected MSRV | |
| # bumps in semver-compatible releases of downstream crates. | |
| run: | | |
| cargo -Zminimal-versions generate-lockfile | |
| # Bump `regex` - only used by our `dev-dependencies` `criterion` dependency - to fix: | |
| # https://github.com/rust-lang/regex/issues/931 | |
| # Can be removed on the next `criterion` upgrade: https://github.com/bheisler/criterion.rs/pull/821 | |
| cargo update -p regex --precise 1.5.1 | |
| cargo update -p num-traits --precise 0.2.16 # Unconditional i128 support used by image | |
| cargo update -p anyhow --precise 1.0.19 # walrus needs bail!() string support from 1.0.1, wasm-bindgen-cli-support requires format_err from 1.0.19 | |
| cargo update -p foreign-types-macros --precise 0.2.2 # `core-graphics 0.23.1` from `winit 0.30` fails to compile on 0.2.1 | |
| cargo update -p same-file --precise 1.0.5 # First release with `unknown` support for wasm32 | |
| - uses: hecrj/setup-rust-action@v2 | |
| with: | |
| rust-version: ${{ matrix.rust_version }}${{ matrix.platform.host }} | |
| targets: ${{ matrix.platform.target }} | |
| components: clippy, rust-src | |
| - name: Install libwayland | |
| if: (matrix.platform.os == 'ubuntu-latest') | |
| run: sudo apt-get update && sudo apt-get install libwayland-dev | |
| - name: Install GCC Multilib | |
| if: (matrix.platform.os == 'ubuntu-latest') && contains(matrix.platform.target, 'i686') | |
| run: sudo apt-get install gcc-multilib | |
| - name: Build crate | |
| shell: bash | |
| run: cargo $CMD build --verbose --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES | |
| - name: Build tests | |
| shell: bash | |
| if: > | |
| !((matrix.platform.os == 'ubuntu-latest') && contains(matrix.platform.target, 'i686')) && | |
| !contains(matrix.platform.target, 'redox') && | |
| !contains(matrix.platform.target, 'freebsd') && | |
| !contains(matrix.platform.target, 'netbsd') | |
| run: cargo $CMD test --no-run --verbose --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES | |
| - name: Run tests | |
| shell: bash | |
| if: > | |
| !((matrix.platform.os == 'ubuntu-latest') && contains(matrix.platform.target, 'i686')) && | |
| !contains(matrix.platform.target, 'redox') && | |
| !contains(matrix.platform.target, 'freebsd') && | |
| !contains(matrix.platform.target, 'netbsd') && | |
| !contains(matrix.platform.target, 'linux') | |
| run: cargo $CMD test --verbose --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES | |
| # TODO: We should also be using Wayland for testing here. | |
| - name: Run tests using Xvfb | |
| shell: bash | |
| if: > | |
| !((matrix.platform.os == 'ubuntu-latest') && contains(matrix.platform.target, 'i686')) && | |
| !contains(matrix.platform.target, 'redox') && | |
| !contains(matrix.platform.target, 'freebsd') && | |
| !contains(matrix.platform.target, 'netbsd') && | |
| contains(matrix.platform.target, 'linux') && | |
| !contains(matrix.platform.options, '--no-default-features') && | |
| !contains(matrix.platform.features, 'wayland') | |
| run: xvfb-run cargo $CMD test --verbose --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES | |
| - name: Lint with clippy | |
| shell: bash | |
| if: > | |
| (matrix.rust_version == 'stable') && | |
| !contains(matrix.platform.options, '--no-default-features') && | |
| !((matrix.platform.os == 'ubuntu-latest') && contains(matrix.platform.target, 'i686')) && | |
| !contains(matrix.platform.target, 'redox') && | |
| !contains(matrix.platform.target, 'freebsd') && | |
| !contains(matrix.platform.target, 'netbsd') | |
| run: cargo clippy --all-targets --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES -- -Dwarnings | |
| - name: Lint with rustdoc | |
| shell: bash | |
| if: > | |
| (matrix.rust_version == 'stable') && | |
| !contains(matrix.platform.options, '--no-default-features') && | |
| !((matrix.platform.os == 'ubuntu-latest') && contains(matrix.platform.target, 'i686')) && | |
| !contains(matrix.platform.target, 'redox') && | |
| !contains(matrix.platform.target, 'freebsd') && | |
| !contains(matrix.platform.target, 'netbsd') | |
| run: cargo doc --no-deps --target ${{ matrix.platform.target }} $OPTIONS --features $FEATURES --document-private-items |