thread-amount 0.3.0

Get the amount of threads in the current process
Documentation
name: Continuous Integration

on:
  push:
    branches:
      - main
  pull_request:

jobs:
  test:
    name: Unit Tests
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: true
      matrix:
        name:
          - Stable
          - Beta
          - Nightly
          - MacOS
          - Windows
        
        include:
          - name: Stable
            toolchain: stable
            os: ubuntu-latest

          - name: Beta
            toolchain: beta
            os: ubuntu-latest

          - name: Nightly
            toolchain: nightly
            os: ubuntu-latest

          - name: MacOS
            toolchain: stable
            os: macOS-latest

          - name: Windows
            toolchain: stable
            os: windows-latest

    steps:
      - name: Checkout the Repository
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6

      - name: Install Rust
        uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # tag=v1
        with:
          profile: minimal
          toolchain: ${{ matrix.toolchain }}
          override: true

      - name: Cache dependencies
        uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2

      - name: Install Nextest
        uses: taiki-e/install-action@nextest

      - name: Run Tests
        run: cargo nextest run

  freebsd-test:
    name: Unit Tests (FreeBSD)
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the Repository
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6

      - name: Run Tests
        uses: vmactions/freebsd-vm@v1
        env:
          RUSTUP_HOME: /usr/local/rustup
          CARGO_HOME: /usr/local/cargo
          RUSTUP_IO_THREADS: 1
        with:
          envs: 'RUSTUP_HOME CARGO_HOME RUSTUP_IO_THREADS'
          usesh: true
          mem: 3000
          prepare: |
            pkg install -y curl python2
            curl https://sh.rustup.rs -sSf --output rustup.sh
            sh rustup.sh -y --profile minimal --default-toolchain stable
            export PATH="/usr/local/cargo/bin:$PATH"
            rustc --version
          run: |
            export PATH="/usr/local/cargo/bin:$PATH"
            cargo test -- --test-threads=1

  fmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the Repository
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6

      - name: Install Rust
        uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # tag=v1
        with:
          profile: minimal
          toolchain: nightly
          override: true

      - name: Cache dependencies
        uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2

      - name: Install rustfmt
        run: rustup component add rustfmt

      - name: Run rustfmt
        uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # tag=v1
        with:
          command: fmt
          args: --all -- --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the Repository
        uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6

      - name: Install Rust
        uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # tag=v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
      
      - name: Cache dependencies
        uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2

      - name: Install clippy
        run: rustup component add clippy

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