evalexpr 13.1.0

A powerful arithmetic and boolean expression evaluator
Documentation
name: Tests and Lints

on:
  pull_request:
  push:

env:
  RUSTFLAGS: -Dwarnings
  RUSTDOCFLAGS: -Dwarnings

jobs:
  rust_check:
    name: Rust check
    runs-on: ubuntu-latest

    strategy:
      matrix:
        all_features: ["", "--all-features"]
      fail-fast: true

    steps:
      - uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1

      - name: cargo check
        run: cargo check --bins --tests --lib ${{ matrix.all_features }}

  rust_check_other_platforms:
    name: Rust check
    runs-on: ${{ matrix.platform }}
    needs: ["rust_check", "rust_format"]

    strategy:
      matrix:
        platform: [macOS-latest, windows-latest]
      fail-fast: true

    steps:
      - uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1

      - name: cargo check
        run: cargo check --bins --tests --lib --all-features

  rust_format:
    name: Rust format
    runs-on: ubuntu-latest

    strategy:
      fail-fast: true

    steps:
      - uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with: 
          toolchain: stable
          components: rustfmt

      - name: cargo format
        uses: actions-rust-lang/rustfmt@v1

  rust_lint:
    name: Rust lint
    runs-on: ubuntu-latest
    needs: ["rust_check", "rust_format"]

    strategy:
      fail-fast: true
      matrix:
        toolchain: [null, "stable", "beta", "nightly"]

    steps:
      - uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with: 
          components: clippy
          toolchain: ${{matrix.toolchain}}

      - name: cargo clippy
        run: cargo clippy --bins --tests --lib --all-features

  rust_test:
    name: Rust test
    runs-on: ubuntu-latest
    needs: ["rust_check", "rust_format"]

    strategy:
      fail-fast: true

    steps:
      - uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1

      - name: cargo test
        run: cargo test --all-features

  rust_bench:
    name: Rust check and lint benchmarks
    runs-on: ubuntu-latest
    needs: ["rust_check", "rust_format"]

    strategy:
      fail-fast: true

    steps:
      - uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: nightly
          components: clippy

      - name: cargo check
        run: cargo check --all-features --benches

      - name: cargo clippy
        run: cargo clippy --all-features --benches

  rust_doc:
    name: Rust doc
    runs-on: ubuntu-latest
    needs: ["rust_check", "rust_format"]

    strategy:
      fail-fast: true

    steps:
      - uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable

      - name: cargo doc
        run: cargo doc --all-features

  check_sync_readme:
    needs: ["rust_check", "rust_format"]
    name: Check sync readme
    runs-on: ubuntu-latest

    strategy:
      fail-fast: true

    steps:
      - uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: stable

      - name: Install cargo-sync-readme
        run: cargo install cargo-sync-readme

      - name: Sync readme check
        run: cargo sync-readme --check

  check_cli:
    needs: ["rust_check", "rust_format"]
    name: Check CLI
    runs-on: ubuntu-latest
    strategy:
      fail-fast: true

    steps:
      - uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1

      - name: CLI
        uses: GuillaumeFalourd/assert-command-line-output@v2.4
        with:
          command_line: cargo run -- p = 2\; p + 3
          contains: 5
          expected_result: PASSED

  coveralls_io:
    needs: [rust_test]
    name: Coverage
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Install toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          toolchain: nightly

      - name: Install cargo-tarpaulin
        run: cargo install cargo-tarpaulin

      - name: Coverage Report with tarpaulin
        run: cargo tarpaulin --all-features --out Lcov --tests --doc -- --test-threads 1

      - name: Upload Coverage
        uses: coverallsapp/github-action@master
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path-to-lcov: ./lcov.info