normalized-path 0.0.9

Opinionated cross-platform, optionally case-insensitive path normalization
Documentation
name: CI

on:
  push:
    branches:
      - "**"
    tags:
      - "!**"
  pull_request:

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: "-D warnings"

jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - run: cargo update --ignore-rust-version
      - run: cargo build
      - run: cargo build --no-default-features
      - run: cargo test
      - run: cargo test --no-default-features

  clippy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: clippy
      - uses: Swatinem/rust-cache@v2
      - run: cargo update --ignore-rust-version
      - run: cargo clippy --all-targets --all-features -- -D warnings

  fmt:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: rustfmt
      - uses: Swatinem/rust-cache@v2
      - run: cargo update --ignore-rust-version
      - run: cargo fmt --all --check

  docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@nightly
      - uses: Swatinem/rust-cache@v2
        with:
          cache-all-crates: true
      - run: cargo install cargo-docs-rs
      - run: cargo update --ignore-rust-version
      - run: cargo docs-rs

  msrv:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: "1.85"
      - uses: Swatinem/rust-cache@v2
      - run: cargo update
      - run: cargo build
      - run: cargo build --no-default-features
      - run: cargo test
      - run: cargo test --no-default-features

  wasm32-unknown-unknown:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
        with:
          targets: wasm32-unknown-unknown
      - uses: Swatinem/rust-cache@v2
        with:
          cache-all-crates: true
      - run: cargo update --ignore-rust-version
      - run: |
          VERSION=$(cargo pkgid wasm-bindgen | cut -d"@" -f2)
          INSTALLED=$(wasm-bindgen --version 2>/dev/null | cut -d" " -f2 || echo "")
          if [ "$VERSION" != "$INSTALLED" ]; then
            cargo install -f wasm-bindgen-cli --version "$VERSION"
          fi
      - run: cargo build --target wasm32-unknown-unknown
      - run: cargo test --target wasm32-unknown-unknown

  wasm32-wasip1:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
        with:
          targets: wasm32-wasip1
      - uses: Swatinem/rust-cache@v2
        with:
          cache-all-crates: true
      - run: cargo install wasmtime-cli
      - run: cargo update --ignore-rust-version
      - run: cargo build --target wasm32-wasip1
      - run: cargo test --target wasm32-wasip1

  fuzz-macos:
    uses: ./.github/workflows/fuzz.yml
    with:
      runs-on: macos-latest
      fork: 3

  fuzz-windows:
    needs: fuzz-macos
    uses: ./.github/workflows/fuzz.yml
    with:
      runs-on: windows-latest

  fuzz-linux:
    needs: fuzz-windows
    uses: ./.github/workflows/fuzz.yml
    with:
      runs-on: ubuntu-latest