Skip to content

"Traitify" the Style struct (#568) #2260

"Traitify" the Style struct (#568)

"Traitify" the Style struct (#568) #2260

Workflow file for this run

on:
pull_request:
push:
branches:
- main
- 0.2.x
- 0.3.x
name: CI
env:
RUSTDOCFLAGS: "-D warnings"
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: "sparse"
jobs:
# MSRV check.
# Taffy only guarantees "latest stable". However we have this check here to ensure that we advertise
# our MSRV. We also make an effort not to increase MSRV in patch versions of Taffy.
#
# We only run `cargo build` (not `cargo test`) so as to avoid requiring dev-dependencies to build with the MSRV
# version. Building is likely sufficient as runtime errors varying between rust versions is very unlikely.
test-features-msrv:
name: "MSRV Build [Rust 1.65]"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.65
- run: cargo build
test-features-debug:
name: "Build [debug feature]"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --features debug
# No features
test-features-none:
name: "Test Suite [no features]"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --no-default-features
- run: cargo test --no-default-features --features taffy_tree
# Default
test-features-default:
name: "Test Suite [default features]"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build
- run: cargo test
test-features-default-with-serde:
name: "Test Suite [default + serde]"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --features serde
- run: cargo test --features serde
test-features-default-except-content-size:
name: "Test Suite [default except content_size]"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --no-default-features --features std,taffy_tree,grid,flexbox,block_layout
- run: cargo test --no-default-features --features std,taffy_tree,grid,flexbox,block_layout
test-features-no-grid-nor-flexbox:
name: "Test Suite [std (no algorithms)]"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --no-default-features --features std
- run: cargo build --no-default-features --features std,taffy_tree
- run: cargo test --no-default-features --features std,taffy_tree
# With std feature
test-features-flexbox:
name: "Test Suite [std + flexbox]"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --no-default-features --features flexbox,std
- run: cargo build --no-default-features --features flexbox,std,taffy_tree
- run: cargo test --no-default-features --features flexbox,std,taffy_tree
test-features-grid:
name: "Test Suite [std + grid]"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --no-default-features --features grid,std
- run: cargo build --no-default-features --features grid,std,taffy_tree
- run: cargo test --no-default-features --features grid,std,taffy_tree
test-features-block:
name: "Test Suite [std + block)]"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --no-default-features --features block_layout,std
- run: cargo build --no-default-features --features block_layout,std,taffy_tree
- run: cargo test --no-default-features --features block_layout,std,taffy_tree
# With alloc feature
test-features-grid-with-alloc:
name: "Test Suite [alloc + no algorithms]"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --no-default-features --features alloc
- run: cargo build --no-default-features --features alloc,taffy_tree
- run: cargo test --no-default-features --features alloc,taffy_tree
test-features-alloc:
name: "Test Suite [alloc + all algorithms]"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --no-default-features --features alloc,grid,flexbox,block_layout
- run: cargo build --no-default-features --features alloc,grid,flexbox,block_layout,taffy_tree
- run: cargo test --no-default-features --features alloc,grid,flexbox,block_layout,taffy_tree
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rustfmt
- run: cargo fmt --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: clippy
- run: cargo +nightly clippy --workspace -- -D warnings
# Run rustdoc with the `docsrs` cfg to ensure that the documentation is compatible with docs.rs.
# This enables the doc_auto_cfg feature, which requires the nightly toolchain.
# Also checks that the examples can be scraped.
doc:
name: Documentation
runs-on: ubuntu-latest
env:
RUSTDOCFLAGS: "--cfg docsrs"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: clippy
- run: cargo +nightly doc -Zunstable-options -Zrustdoc-scrape-examples --all-features --no-deps
markdownlint:
name: Markdown Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Markdown Lint
uses: DavidAnson/markdownlint-cli2-action@v16
with:
globs: "**/*.md"
fixture-format:
name: Test Fixture Formatting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run format script
run: cargo format-fixtures
- name: Ensure no changes
run: |
if [ -z "$(git status --porcelain)" ]; then
echo "Fixtures formatted correctly"
else
git status && echo -e "\nTest fixtures are not formatted correctly. Please run 'cargo format-fixtures'"
exit 1
fi
benchmarks:
name: Build Benchmarks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo xbench --no-run
name: Build benchmarks
env:
RUSTFLAGS: "-C opt-level=0"
benchmarks-with-yoga:
name: Build Benchmarks (w/ yoga)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo xbench --no-run --features yoga
name: Build benchmarks (w/yoga)
env:
RUSTFLAGS: "-C opt-level=0"