mcutie 0.4.0

A no-std, no-alloc, opinionated MQTT client for IoT devices
Documentation
name: Tests

on:
  push:
    branches:
      - main
  pull_request: {}

jobs:
  checks:
    name: "Target Checks"
    runs-on: ubuntu-latest

    strategy:
      matrix:
        target:
          - "riscv32imac-unknown-none-elf"  # ESP32C6
          - "thumbv6m-none-eabi"            # RP2040

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup build cache
        uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: ${{ matrix.target }}

      - name: Cargo check basic
        run: cargo check --target ${{ matrix.target }} --no-default-features

      - name: Cargo check serde
        run: cargo check --target ${{ matrix.target }} --no-default-features --features serde

      - name: Cargo check homeassistant with defmt
        run: cargo check --target ${{ matrix.target }} --no-default-features --features homeassistant,defmt

      - name: Cargo check homeassistant with log
        run: cargo check --target ${{ matrix.target }} --no-default-features --features homeassistant,log

  test:
    name: "Tests and Lints"
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup build cache
        uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy

      - name: Run tests
        run: cargo test

      - name: Clippy
        run: cargo clippy -- --deny "warnings"

      - name: Rustfmt
        run: cargo fmt --check

      - name: Check for unused dependencies
        uses: bnjbvr/cargo-machete@main

      - name: Check semver
        uses: obi1kenobi/cargo-semver-checks-action@v2
        with:
          feature-group: default-features