json-patch 4.1.0

RFC 6902, JavaScript Object Notation (JSON) Patch
Documentation
on:
  push:
    branches:
      - main
      - actions-*
  pull_request:
    branches: [ "main" ]

name: Build

jobs:
  check:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v3

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - name: Run cargo build
        run: cargo build --verbose

  bench:
    name: Bench
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v3

      - name: Install nightly toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true

      - name: Run cargo bench
        run: cargo +nightly bench --verbose

  test:
    name: Test
    runs-on: ubuntu-latest
    container:
      image: xd009642/tarpaulin:0.22.0
      options: --security-opt seccomp=unconfined
    steps:
      - name: Checkout sources
        uses: actions/checkout@v3

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - name: Run cargo test
        run: cargo tarpaulin --verbose --all-features --workspace --timeout 120 --out Xml

      - name: Codecov
        uses: codecov/codecov-action@v3.1.4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          verbose: true
          fail_ci_if_error: true

  lints:
    name: Lints
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
          components: rustfmt, clippy

      - name: Run cargo fmt
        run: cargo fmt --all -- --check

      - name: Run cargo clippy
        run: cargo clippy -- -D warnings