name: rust-test

on:
  push:
    branches:
      - 'main'
      - 'branch-*'
  pull_request:
    branches:
      - "*"

jobs:
  format:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7

      - uses: dtolnay/rust-toolchain@stable

      - name: Format
        run: cargo fmt -- --check

  build:
    strategy:
      fail-fast: false
      matrix:
        os:
          - ubuntu-latest
          # - macos-11
          # - windows-latest
    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v7

      - uses: dtolnay/rust-toolchain@stable

      - uses: Swatinem/rust-cache@v2

      - name: build and lint with clippy
        run: cargo clippy --all-targets --features integration-test -- -D warnings

      - name: Check docs
        run: cargo doc

      - name: Check all features
        run: cargo check --all-targets --features integration-test

  test:
    strategy:
      fail-fast: false
      matrix:
        os:
          - ubuntu-latest
          # - macos-11
          # - windows-latest
    runs-on: ${{ matrix.os }}
    env:
      # Disable full debug symbol generation to speed up CI build and keep memory down
      # "1" means line tables only, which is useful for panic tracebacks.
      RUSTFLAGS: -C debuginfo=1
      RUST_BACKTRACE: "1"
      RUST_LOG: debug

    steps:
      - uses: actions/checkout@v7

      - name: Install minimal stable with clippy and rustfmt
        uses: dtolnay/rust-toolchain@stable

      - uses: Swatinem/rust-cache@v2

      - uses: actions/setup-java@v5
        with:
          distribution: "temurin"
          java-version: "17"

      - name: Install kerberos to workaround required kdestroy
        run: sudo apt-get install -y libkrb5-dev krb5-user

      - name: Run tests
        run: cargo test --features integration-test
