file_alloc 0.1.0

跨平台、高性能、兼容性好的文件大小分配库
Documentation
name: Test

on:
  push:
  pull_request:
  schedule:
    - cron: "0 0 * * *"

permissions:
  contents: read

jobs:
  format:
    name: Format Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - run: cargo fmt --all -- --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: clippy
      - uses: swatinem/rust-cache@v2
      - name: Install cargo-hack
        run: cargo install cargo-hack
      - name: Run Clippy
        run: cargo hack clippy --feature-powerset

  test:
    name: Test (${{ matrix.os }} - ${{ matrix.channel }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        channel: [stable, beta, nightly]
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.channel }}
      - uses: swatinem/rust-cache@v2
        with:
          key: ${{ matrix.os }}-${{ matrix.channel }}
      - name: Install cargo-hack
        uses: taiki-e/install-action@cargo-hack
      - name: Run Tests
        run: cargo hack test --feature-powerset --depth 1 --verbose

  deny:
    name: Cargo Deny
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - uses: swatinem/rust-cache@v2
      - name: Install cargo-deny
        run: cargo install cargo-deny
      - name: Run Deny
        run: cargo deny --all-features check

  udeps:
    name: Unused Deps
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@nightly
      - uses: swatinem/rust-cache@v2
      - name: Install cargo-hack & cargo-udeps
        run: |
          cargo install cargo-hack
          cargo install cargo-udeps
      - name: Run Udeps
        run: cargo hack udeps --feature-powerset

  docs:
    name: Doc Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - uses: swatinem/rust-cache@v2
      - name: Install cargo-hack
        run: cargo install cargo-hack
      - name: Run Doc Check
        env:
          RUSTDOCFLAGS: "-D warnings"
        run: cargo hack doc --feature-powerset --no-deps

  minimal-versions:
    name: Minimal Versions Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@nightly
      - uses: swatinem/rust-cache@v2
      - name: Install cargo-hack
        run: cargo install cargo-hack
      - name: Check with minimal versions
        run: cargo hack check --feature-powerset -Z minimal-versions