embedded-redis 0.8.0

A no_std Redis client
Documentation
name: QA

on:
  push:

env:
  CARGO_TERM_COLOR: always
  RUST_BACKTRACE: full

jobs:
  test:
    name: Build & test
    strategy:
      fail-fast: false
      matrix:
        os:
          - ubuntu-latest
        rust:
          - stable
          - beta
          - nightly
        redis-version: [6]

    runs-on: ${{ matrix.os }}

    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          default: true
          profile: minimal

      - name: Restore cache
        uses: Swatinem/rust-cache@v1

      - name: Start Redis
        uses: supercharge/redis-github-action@1.4.0
        with:
          redis-version: ${{ matrix.redis-version }}

      - name: Build & test
        env:
          RUST_VERSION: ${{ matrix.rust }}
          OS: ${{ matrix.os }}
          RUSTFLAGS: -D warnings
        run: cargo test

      - name: Build default features
        run: cargo build --release --features strict

      - name: Build mock feature
        run: cargo build --release --features mock,strict

  benchmark:
    name: Run benchmarks
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          default: true
          components: rustfmt

      - name: Start Redis
        uses: supercharge/redis-github-action@1.4.0
        with:
          redis-version: 6

      - run: cargo bench --features benchmarks

  no_std_builds:
    name: Build no_std targets
    runs-on: ubuntu-latest
    strategy:
      matrix:
        target:
          - thumbv7m-none-eabi
          - thumbv8m.main-none-eabihf
          - riscv32imac-unknown-none-elf
        rust:
          - stable
          - beta
          - nightly
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          target: ${{ matrix.target }}
          default: true
          profile: minimal

      - name: Restore cache
        uses: Swatinem/rust-cache@v1

      - name: Build
        run: cargo build --release --target ${{ matrix.target }} --features strict

  code_style:
    name: Check code style
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          default: true
          components: rustfmt

      - run: cargo fmt --all -- --check

  documentation:
    name: Check documentation
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          default: true

      - name: Restore cache
        uses: Swatinem/rust-cache@v1

      - name: Check documentation
        run: cargo rustdoc --features mock,strict -- -D warnings

  clippy:
    name: Linting
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          default: true

      - name: Restore cache
        uses: Swatinem/rust-cache@v1

      - name: Clippy
        run: cargo clippy --all-targets --features mock,strict -- -D warnings