rand_aes 0.6.1

AES based pseudo-random number generator
Documentation
name: CI

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  check:
    timeout-minutes: 30

    strategy:
      fail-fast: false
      matrix:
        include:
          - name: Linux x86_64
            os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
            arguments: ""
            rustflags: ""

          - name: Linux x86
            os: ubuntu-latest
            target: i686-unknown-linux-gnu
            arguments: ""
            rustflags: ""

          - name: Linux riscv64gc
            os: ubuntu-latest
            target: riscv64gc-unknown-linux-gnu
            arguments: "--features=experimental_riscv"
            rustflags: ""

          - name: MacOS aarch64
            os: macos-latest
            target: aarch64-apple-darwin
            arguments: ""
            rustflags: ""

          - name: Plain Wasm32 (JavaScript Host for getrandom)
            os: ubuntu-latest
            target: wasm32-unknown-unknown
            arguments: "--features getrandom/wasm_js"
            rustflags: "--cfg getrandom_backend=\"wasm_js\""
    name: Clippy ${{ matrix.name }}
    runs-on: ${{ matrix.os }}

    steps:
      - name: Checkout repo
        uses: actions/checkout@v4

      - name: Install toolchain
        run: |

          rustup toolchain install stable --no-self-update --profile=minimal --component clippy --target ${{ matrix.target }}
          rustup override set stable
          cargo -V

      - name: Caching
        uses: Swatinem/rust-cache@v2
        with:
          key: check-${{ matrix.target }}

      - name: Run clippy
        shell: bash
        run: |

          set -e

          # Check with no features
          cargo clippy --target ${{ matrix.target }} --no-default-features

          # Check with default features
          RUSTFLAGS='${{ matrix.rustflags }}' cargo clippy --target ${{ matrix.target }} ${{ matrix.arguments }}

  test:
    timeout-minutes: 30

    strategy:
      fail-fast: false
      matrix:
        include:
          - name: Linux x86_64
            os: ubuntu-latest
            target: x86_64-unknown-linux-gnu

          - name: MacOS aarch64
            os: macos-latest
            target: aarch64-apple-darwin

          - name: Wasm32 Wasip1
            os: ubuntu-latest
            target: wasm32-wasip1

    name: Test ${{ matrix.name }}
    runs-on: ${{ matrix.os }}
    env:
      CARGO_TARGET_WASM32_WASIP1_RUNNER: wasmtime
    needs: [ check ]

    steps:
      - name: Checkout repo
        uses: actions/checkout@v4

      - name: Install toolchain
        run: |

          rustup toolchain install stable --no-self-update --profile=minimal --target ${{ matrix.target }}
          cargo -V

      - name: Caching
        uses: Swatinem/rust-cache@v2
        with:
          key: test-${{ matrix.target }}

      - name: Setup `wasmtime`
        if: matrix.target == 'wasm32-wasip1'
        uses: bytecodealliance/actions/wasmtime/setup@v1

      - name: Tests (default)
        shell: bash
        run: |

          set -e
          cargo test --lib --tests --target ${{ matrix.target }}

      - name: Tests (force_software)
        shell: bash
        run: |

          set -e
          cargo test --lib --tests --features=force_software --target ${{ matrix.target }}

      - name: Tests (force_runtime_detection)
        if: matrix.target != 'wasm32-wasip1'
        shell: bash
        run: |

          set -e
          cargo test --lib --tests --features=force_runtime_detection --target ${{ matrix.target }}

      - name: Tests no-std
        shell: bash
        run: |

          set -e
          cargo test --lib --tests --no-default-features --target ${{ matrix.target }}

      - name: Tests no-std (force_software)
        shell: bash
        run: |

          set -e
          cargo test --lib --tests --no-default-features --features=force_software --target ${{ matrix.target }}

  verification:
    timeout-minutes: 30

    strategy:
      fail-fast: false
      matrix:
        include:
          - name: aarch64
            arch: aarch64
            target: aarch64-unknown-linux-gnu
          - name: riscv64
            arch: riscv64
            target: riscv64gc-unknown-linux-gnu
          - name: x86
            arch: i686
            target: i686-unknown-linux-gnu
          - name: x86_64
            arch: x86-64
            target: x86_64-unknown-linux-gnu

    name: Validate ${{ matrix.name }}
    runs-on: ubuntu-latest
    needs: [ check ]

    steps:
      - name: Checkout repo
        uses: actions/checkout@v4

      - uses: awalsh128/cache-apt-pkgs-action@latest
        with:
          packages: qemu-user qemu-user-static gcc-${{ matrix.arch }}-linux-gnu
          version: 1.0

      - name: Install toolchain
        run: |

          rustup toolchain install stable --no-self-update --profile=minimal --target ${{ matrix.target }}
          rustup override set stable
          cargo -V

      - name: Caching
        uses: Swatinem/rust-cache@v2
        with:
          key: verification-${{ matrix.target }}

      - name: Run verification
        shell: bash
        run: |

          set -e
          chmod +x scripts/run_verification.sh
          ./scripts/run_verification.sh ${{ matrix.name }}