rand_seeder 0.5.0

A universal random number seeder based on SipHash.
Documentation
name: Tests

on:
  push:
    branches: [ master, '0.[0-9]+' ]
  pull_request:
    branches: [ master, '0.[0-9]+' ]
  schedule:
    - cron: '0 0 * * SUN'

permissions:
  contents: read #  to fetch code (actions/checkout)

jobs:
  check-doc:
    name: Check doc, clippy, fmt
    runs-on: ubuntu-latest
    env:
      RUSTDOCFLAGS: "-Dwarnings --cfg docsrs -Zunstable-options --generate-link-to-definition"
    steps:
      - uses: actions/checkout@v6
      - name: Install toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: nightly
          components: clippy, rustfmt
      - name: Doc build
        run: cargo doc --all-features --no-deps
      - name: Clippy
        run: cargo clippy --workspace --all-targets -- -D warnings
      - name: rustfmt
        run: cargo fmt -- --check

  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
            toolchain: stable
          - os: macos-latest
            target: x86_64-apple-darwin
            toolchain: stable
            # TODO: also aarch64 / M1
          - os: windows-latest
            target: x86_64-pc-windows-gnu
            toolchain: stable
          - os: windows-latest
            target: x86_64-pc-windows-msvc
            toolchain: beta
            # Test both windows-gnu and windows-msvc; use beta rust on one
          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
            variant: MSRV
            toolchain: 1.85.0
          - os: ubuntu-latest
            deps: sudo apt-get update ; sudo apt install gcc-multilib
            target: i686-unknown-linux-gnu
            toolchain: nightly
          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
            toolchain: nightly
            variant: minimal_versions

    steps:
      - uses: actions/checkout@v6
      - name: MSRV
        if: ${{ matrix.variant == 'MSRV' }}
        run: cp Cargo.lock.msrv Cargo.lock
      - name: Install toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          target: ${{ matrix.target }}
          toolchain: ${{ matrix.toolchain }}
      - run: ${{ matrix.deps }}
      - name: Maybe minimal versions
        if: ${{ matrix.variant == 'minimal_versions' }}
        run: |
          cargo generate-lockfile -Z minimal-versions
      - name: Test
        run: |
          cargo test --no-fail-fast --target ${{ matrix.target }}

  test-cross:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - os: ubuntu-latest
            target: powerpc-unknown-linux-gnu
            toolchain: stable

    steps:
      - uses: actions/checkout@v6
      - name: Install toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          target: ${{ matrix.target }}
          toolchain: ${{ matrix.toolchain }}
      - name: Cache cargo plugins
        uses: actions/cache@v5
        with:
          path: ~/.cargo/bin/
          key: ${{ runner.os }}-cargo-plugins
      - name: Install cross
        run: cargo install cross || true
      - name: Test
        run: |
          cross test --no-fail-fast

  test-miri:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Install toolchain
        run: |
          rustup toolchain install nightly --component miri
          rustup override set nightly
          cargo miri setup
      - name: Test rand
        run: |
          cargo miri test

  test-no-std:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: Install toolchain
        uses: dtolnay/rust-toolchain@nightly
        with:
            target: thumbv6m-none-eabi
      - name: Build top-level only
        run: cargo build --target=thumbv6m-none-eabi --no-default-features

  test-ios:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v6
      - name: Install toolchain
        uses: dtolnay/rust-toolchain@nightly
        with:
            target: aarch64-apple-ios
      - name: Build top-level only
        run: cargo build --target=aarch64-apple-ios