uds_protocol 0.0.2

A library for encoding and decoding UDS (ISO 14229) messages
Documentation
name: CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  merge_group:

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: -Dwarnings

jobs:
  build_and_test:
    name: Build and Test
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@stable
      - name: Install cargo-llvm-cov
        uses: taiki-e/install-action@cargo-llvm-cov
      - name: Install cargo Nextest
        uses: taiki-e/install-action@nextest
      - uses: Swatinem/rust-cache@v2
      - name: Build with all features
        run: cargo build --all-features --release
      - name: Run Tests
        run: cargo nextest run --all-features --release --tests --profile ci
      - name: Upload test results to Codecov
        uses: codecov/test-results-action@v1
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: target/nextest/ci/junit.xml
      - name: Check Docs build
        run: cargo doc --release --all-features --no-deps
      - name: Generate code coverage
        run: cargo llvm-cov --all-features --release --lcov --output-path lcov.info
      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: lcov.info
          fail_ci_if_error: true

  lint:
    name: Run Clippy
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - run: rustup component add clippy
      - run: cargo clippy --all-features

  format:
    name: Run Cargo Format
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - run: rustup component add rustfmt
      - run: cargo fmt -- --check

  semver-checks:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - name: Checkout
        uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - name: Check semver
        uses: obi1kenobi/cargo-semver-checks-action@v2