ijson 0.1.6

A more memory efficient replacement for serde_json::Value
Documentation
on: [push, pull_request]

name: CI

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: check
          args: --all-features

  fmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - run: rustup component add rustfmt
      - uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: -- --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - run: rustup component add clippy
      - uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: --all-features -- -D warnings

  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: -- --test-threads=1

  test_miri:
    name: Test (Miri)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: miri
      - uses: actions-rs/cargo@v1
        with:
          command: miri
          args: test
        env:
          MIRIFLAGS: "-Zmiri-disable-isolation"

  test_miri_32bit_linux:
    name: Test (Miri i686-unknown-linux-gnu)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: miri
          target: i686-unknown-linux-gnu
      - uses: actions-rs/cargo@v1
        with:
          command: miri
          args: test --target i686-unknown-linux-gnu
        env:
          MIRIFLAGS: "-Zmiri-disable-isolation"

  test_miri_32bit_windows:
    name: Test (Miri i686-pc-windows-msvc)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: miri
          target: i686-pc-windows-msvc
      - uses: actions-rs/cargo@v1
        with:
          command: miri
          args: test --target i686-pc-windows-msvc
        env:
          MIRIFLAGS: "-Zmiri-disable-isolation"

  test_nightly:
    name: Test (Nightly)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: llvm-tools-preview
      - uses: actions-rs/cargo@v1
        with:
          command: install
          args: cargo-binutils rustfilt
      - name: Build tests
        run: |
          cargo rustc --message-format=json --tests -- -Zinstrument-coverage | jq -r '.executable | strings' > executables.txt
      - name: Run tests
        run: |
          while read p; do
            exec "$p" --test-threads=1
          done <executables.txt
        env:
          LLVM_PROFILE_FILE: "prof/%m.profraw"
      - name: Generate coverage report
        run: |
          rust-profdata merge -sparse prof/*.profraw -o default.profdata
          cat executables.txt | xargs -d '\n' rust-cov export -format='lcov' -instr-profile='default.profdata' > lcov.info
      - name: Upload coverage report
        uses: codecov/codecov-action@v1
        with:
          fail_ci_if_error: true
      - uses: actions/upload-artifact@v4
        with:
          name: Upload coverage artifact
          path: lcov.info