Update readme badges and main
branch references.
#1591
Workflow file for this run
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
env: | |
# We aim to always test with the latest stable Rust toolchain, however we pin to a specific | |
# version like 1.70. Note that we only specify MAJOR.MINOR and not PATCH so that bugfixes still | |
# come automatically. If the version specified here is no longer the latest stable version, | |
# then please feel free to submit a PR that adjusts it along with the potential clippy fixes. | |
RUST_STABLE_VER: "1.82" # In quotes because otherwise 1.70 would be interpreted as 1.7 | |
name: CI | |
on: | |
pull_request: | |
merge_group: | |
jobs: | |
rustfmt: | |
runs-on: ubuntu-latest | |
name: cargo fmt | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: install stable toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ env.RUST_STABLE_VER }} | |
components: rustfmt | |
- name: cargo fmt | |
run: cargo fmt --all --check | |
- name: install ripgrep | |
run: | | |
sudo apt update | |
sudo apt install ripgrep | |
- name: check copyright headers | |
run: bash .github/copyright.sh | |
test-stable: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [windows-latest, macos-latest, ubuntu-latest] | |
name: cargo clippy + test | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: install additional linux dependencies | |
run: | | |
sudo apt update | |
sudo apt install libgtk-3-dev | |
if: contains(matrix.os, 'ubuntu') | |
- name: install stable toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ env.RUST_STABLE_VER }} | |
components: clippy | |
- name: restore cache | |
uses: Swatinem/rust-cache@v2 | |
# Clippy packages in deeper-to-higher dependency order | |
- name: cargo clippy piet | |
run: cargo clippy --manifest-path=piet/Cargo.toml --all-targets --all-features -- -D warnings | |
- name: cargo clippy piet-cairo | |
run: cargo clippy --manifest-path=piet-cairo/Cargo.toml --all-targets --all-features -- -D warnings | |
if: contains(matrix.os, 'ubuntu') | |
- name: cargo clippy piet-coregraphics | |
run: cargo clippy --manifest-path=piet-coregraphics/Cargo.toml --all-targets --all-features -- -D warnings | |
if: contains(matrix.os, 'macos') | |
- name: cargo clippy piet-direct2d | |
run: cargo clippy --manifest-path=piet-direct2d/Cargo.toml --all-targets --all-features -- -D warnings | |
if: contains(matrix.os, 'windows') | |
- name: cargo clippy piet-svg | |
run: cargo clippy --manifest-path=piet-svg/Cargo.toml --all-targets --all-features -- -D warnings | |
- name: cargo clippy piet-common | |
run: cargo clippy --manifest-path=piet-common/Cargo.toml --all-targets --features=png -- -D warnings | |
# Test packages in deeper-to-higher dependency order | |
- name: cargo test piet | |
run: cargo test --manifest-path=piet/Cargo.toml --all-features | |
- name: cargo test piet-cairo | |
run: cargo test --manifest-path=piet-cairo/Cargo.toml --all-features | |
if: contains(matrix.os, 'ubuntu') | |
- name: cargo test piet-coregraphics | |
run: cargo test --manifest-path=piet-coregraphics/Cargo.toml --all-features | |
if: contains(matrix.os, 'macos') | |
- name: cargo test piet-direct2d | |
run: cargo test --manifest-path=piet-direct2d/Cargo.toml --all-features | |
if: contains(matrix.os, 'windows') | |
- name: cargo test piet-svg | |
run: cargo test --manifest-path=piet-svg/Cargo.toml --all-features | |
- name: cargo test piet-common | |
run: cargo test --manifest-path=piet-common/Cargo.toml --features=png | |
test-stable-wasm: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [windows-latest, macos-latest, ubuntu-latest] | |
name: cargo clippy + test (wasm32) | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: install stable toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ env.RUST_STABLE_VER }} | |
targets: wasm32-unknown-unknown | |
components: clippy | |
- name: restore cache | |
uses: Swatinem/rust-cache@v2 | |
# Clippy packages in deeper-to-higher dependency order | |
- name: cargo clippy piet | |
run: cargo clippy --manifest-path=piet/Cargo.toml --all-targets --all-features --target wasm32-unknown-unknown -- -D warnings | |
- name: cargo clippy piet-web | |
run: cargo clippy --manifest-path=piet-web/Cargo.toml --all-targets --all-features --target wasm32-unknown-unknown -- -D warnings | |
- name: cargo clippy piet-common | |
run: cargo clippy --manifest-path=piet-common/Cargo.toml --all-targets --features=png --target wasm32-unknown-unknown -- -D warnings | |
# Test packages in deeper-to-higher dependency order | |
# TODO: Find a way to make tests work. Until then the tests are merely compiled. | |
- name: cargo test piet | |
run: cargo test --manifest-path=piet/Cargo.toml --all-features --no-run --target wasm32-unknown-unknown | |
- name: cargo test piet-web | |
run: cargo test --manifest-path=piet-web/Cargo.toml --all-features --no-run --target wasm32-unknown-unknown | |
- name: cargo test piet-common | |
run: cargo test --manifest-path=piet-common/Cargo.toml --features=png --no-run --target wasm32-unknown-unknown | |
- name: install wasm-pack | |
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh | |
- name: test chrome | |
run: wasm-pack test --headless --chrome piet-common | |
- name: test firefox | |
run: wasm-pack test --headless --firefox piet-common | |
# macOS 14 CI runners don't have Firefox installed | |
if: contains(matrix.os, 'macos') == false | |
docs: | |
name: cargo doc | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [windows-latest, macos-latest, ubuntu-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: install additional linux dependencies | |
run: | | |
sudo apt update | |
sudo apt install libgtk-3-dev | |
if: contains(matrix.os, 'ubuntu') | |
- name: install nightly toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
with: | |
targets: wasm32-unknown-unknown | |
- name: restore cache | |
uses: Swatinem/rust-cache@v2 | |
# Doc packages in deeper-to-higher dependency order | |
- name: cargo doc piet | |
run: cargo doc --manifest-path=piet/Cargo.toml --all-features --document-private-items | |
- name: cargo doc piet-cairo | |
run: cargo doc --manifest-path=piet-cairo/Cargo.toml --all-features --document-private-items | |
if: contains(matrix.os, 'ubuntu') | |
- name: cargo doc piet-coregraphics | |
run: cargo doc --manifest-path=piet-coregraphics/Cargo.toml --all-features --document-private-items | |
if: contains(matrix.os, 'macos') | |
- name: cargo doc piet-direct2d | |
run: cargo doc --manifest-path=piet-direct2d/Cargo.toml --all-features --document-private-items | |
if: contains(matrix.os, 'windows') | |
- name: cargo doc piet-svg | |
run: cargo doc --manifest-path=piet-svg/Cargo.toml --all-features --document-private-items | |
- name: cargo doc piet-common | |
run: cargo doc --manifest-path=piet-common/Cargo.toml --features=png --document-private-items | |
- name: cargo doc piet-web | |
run: cargo doc --manifest-path=piet-web/Cargo.toml --all-features --document-private-items --target wasm32-unknown-unknown | |
# If this fails, consider changing your text or adding something to .typos.toml | |
typos: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: check typos | |
uses: crate-ci/[email protected] | |
compare-snapshots: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-latest, macos-latest, ubuntu-latest] | |
name: compare snapshots | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'true' | |
- name: install additional linux dependencies | |
run: | | |
sudo apt update | |
sudo apt install libgtk-3-dev | |
if: contains(matrix.os, 'ubuntu') | |
- name: install stable toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ env.RUST_STABLE_VER }} | |
components: clippy | |
- name: restore cache | |
uses: Swatinem/rust-cache@v2 | |
# The user of always() allows for multiple scale factor steps to always run even if one of them fails. | |
- name: generate and compare (1.00) (ubuntu+cairo) | |
run: cargo run --manifest-path=piet-cairo/Cargo.toml --example=test-picture -- --all --scale=1 --out=cairo_samples --compare=./piet/snapshots/cairo | |
if: contains(matrix.os, 'ubuntu') && always() | |
- name: generate and compare (2.00) (ubuntu+cairo) | |
run: cargo run --manifest-path=piet-cairo/Cargo.toml --example=test-picture -- --all --scale=2 --out=cairo_samples --compare=./piet/snapshots/cairo | |
if: contains(matrix.os, 'ubuntu') && always() | |
- name: upload failures (ubuntu+cairo) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cairo-failure | |
path: cairo_samples | |
if: contains(matrix.os, 'ubuntu') && failure() | |
- name: generate and compare (1.00) (macos) | |
run: cargo run --manifest-path=piet-coregraphics/Cargo.toml --example=test-picture -- --all --scale=1 --out=coregraphics_samples --compare=./piet/snapshots/coregraphics | |
if: contains(matrix.os, 'macos') && always() | |
- name: generate and compare (2.00) (macos) | |
run: cargo run --manifest-path=piet-coregraphics/Cargo.toml --example=test-picture -- --all --scale=2 --out=coregraphics_samples --compare=./piet/snapshots/coregraphics | |
if: contains(matrix.os, 'macos') && always() | |
- name: upload failures (macos) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coregraphics-failure | |
path: coregraphics_samples | |
if: contains(matrix.os, 'macos') && failure() | |
- name: generate and compare (1.00) (d2d) | |
run: cargo run --manifest-path=piet-direct2d/Cargo.toml --example=test-picture -- --all --scale=1 --out=d2d_samples --compare=./piet/snapshots/d2d | |
if: contains(matrix.os, 'windows') && always() | |
- name: generate and compare (2.00) (d2d) | |
run: cargo run --manifest-path=piet-direct2d/Cargo.toml --example=test-picture -- --all --scale=2 --out=d2d_samples --compare=./piet/snapshots/d2d | |
if: contains(matrix.os, 'windows') && always() | |
- name: upload failures (d2d) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: d2d-failure | |
path: d2d_samples | |
if: contains(matrix.os, 'windows') && failure() |