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"