hyperdriver 0.12.3

The missing middle for Hyper - Servers and Clients with ergonomic APIs
Documentation
on:
  merge_group:
  pull_request:
    branches: [main, backports/*]
  push:
    branches: [main, backports/*]

name: CI

env:
  RUSTDOCFLAGS: "-Dwarnings"
  RUST_STABLE: &toolchain "1.92"
  RUST_MSRV: &msrv "1.87"
  CARGO_TERM_COLOR: always

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    strategy:
      matrix:
        toolchain:
          - *msrv
          - *toolchain
          - stable
          - nightly
          - beta
    env:
      RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}
    continue-on-error: ${{ contains(fromJSON('["stable", "nightly", "beta"]'), matrix.toolchain) }}
    steps:
      - uses: extractions/setup-just@v2
      - name: Install rust toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.toolchain }}
      - name: Checkout sources
        uses: actions/checkout@v4
      - name: Run cargo build
        run: just build

  check:
    name: Check
    runs-on: ubuntu-latest
    strategy:
      matrix:
        steps:
          - name: cargo check
            run: just check
          - name: cargo hack check
            run: just check-hack-powerset
            hack: true
          - name: cargo hack check --each-feature
            run: just check-hack-each
            hack: true
          - name: cargo hack check --tests
            run: just check-hack-tests
            hack: true
          - name: cargo hack check --examples
            run: just check-hack-examples
            hack: true
          - name: cargo doc
            run: just docs
          - name: clippy
            run: just clippy
          - name: fmt
            run: just fmt

    steps:
      - uses: extractions/setup-just@v2
      - name: Install rust toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: *toolchain
      - name: Checkout sources
        uses: actions/checkout@v4
      - uses: taiki-e/install-action@cargo-hack
        if: matrix.steps.hack
      - name: ${{ matrix.steps.name }}
        run: ${{ matrix.steps.run }}

  pre-commit:
    name: pre-commit
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-python@v5
      - run: pip install pre-commit
      - uses: extractions/setup-just@v2
      - name: Install rust toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: *toolchain
      - name: Checkout sources
        uses: actions/checkout@v4
      - name: Run pre-commit
        run: just pre-commit-ci

  test:
    name: Tests
    runs-on: ubuntu-latest
    strategy:
      matrix:
        toolchain:
          - *toolchain
          - stable
          - beta
    continue-on-error: ${{ contains(fromJSON('["stable", "nightly", "beta"]'), matrix.toolchain) }}
    env:
      RUSTUP_TOOLCHAIN: ${{ matrix.toolchain }}
    steps:
      - uses: extractions/setup-just@v2
      - uses: taiki-e/install-action@nextest

      - name: Checkout
        uses: actions/checkout@v4

      - name: Install rust toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.toolchain }}

      - name: Build cargo tests
        run: just test-build

      - name: Run cargo test
        run: just test-run

  deny:
    name: Deny
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Run cargo deny
        uses: EmbarkStudios/cargo-deny-action@v2
        with:
          command: check bans licenses sources