dsn 1.1.0

DSN (Data Source Name) parser
Documentation
---
name: Test

on:
  workflow_call:
  pull_request:
    branches:
      - '*'

jobs:
  format:
    name: Format
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable

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

  lint:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable

      - name: Clippy
        run: cargo clippy -- -D clippy::all -D clippy::nursery -D warnings

  check:
    name: Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable

      - name: Check
        run: cargo check

  test:
    name: Test
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - macOS-latest
        rust:
          - stable
    runs-on: ${{ matrix.os }}
    needs:
      - format
      - lint
      - check
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable

      - name: test
        run: cargo test

  coverage:
    name: Coverage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@nightly

      - name: Run tests
        run: cargo test --verbose
        env:
          CARGO_INCREMENTAL: '0'
          RUSTFLAGS: -Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code
            -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests
          RUSTDOCFLAGS: -Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code
            -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests

      - name: rust-grcov
        uses: actions-rs/grcov@v0.1

      - name: Upload to codecov.io
        uses: codecov/codecov-action@v3

      - name: Coveralls GitHub Action
        uses: coverallsapp/github-action@v2