constant_time_eq 0.4.3

Compares two equal-sized byte strings in constant time.
Documentation
name: tests

on: [push, pull_request]
permissions:
  contents: read

jobs:
  tests:
    name: Run tests
    strategy:
      matrix:
        toolchain: [1.95.0, stable, beta, nightly]
        os: [ubuntu-latest, macos-latest, windows-latest, ubuntu-24.04-arm]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ${{ matrix.os }}-cargo-${{ matrix.toolchain }}-${{ hashFiles('**/Cargo.lock','**/Cargo.toml') }}
      - run: rustup toolchain install ${{ matrix.toolchain }} --profile=minimal --no-self-update
      - run: rustup default ${{ matrix.toolchain }}
      - run: rustup override set ${{ matrix.toolchain }}
      - run: rustc --verbose --version
      - run: cargo --verbose --version
      - run: cargo build --verbose
      - run: cargo build --verbose --no-default-features
      - run: cargo build --verbose --release
      - run: cargo build --verbose --release --no-default-features
      - run: cargo test --verbose
      - run: cargo test --verbose --no-default-features
      - run: cargo test --verbose --release
      - run: cargo test --verbose --release --no-default-features
      - name: Cross-compile x86_64-unknown-linux-gnu
        env:
          TARGET: x86_64-unknown-linux-gnu
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }}
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Cross-compile i686-unknown-linux-gnu
        env:
          TARGET: i686-unknown-linux-gnu
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }}
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Cross-compile aarch64-unknown-linux-gnu
        env:
          TARGET: aarch64-unknown-linux-gnu
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }}
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Cross-compile armv7-unknown-linux-gnueabihf
        env:
          TARGET: armv7-unknown-linux-gnueabihf
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }}
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Cross-compile aarch64-apple-darwin
        env:
          TARGET: aarch64-apple-darwin
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }}
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Cross-compile riscv64gc-unknown-linux-gnu
        env:
          TARGET: riscv64gc-unknown-linux-gnu
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }}
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Cross-compile riscv32imafc-unknown-none-elf
        env:
          TARGET: riscv32imafc-unknown-none-elf
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Cross-compile loongarch64-unknown-linux-gnu
        env:
          TARGET: loongarch64-unknown-linux-gnu
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }}
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Cross-compile s390x-unknown-linux-gnu
        env:
          TARGET: s390x-unknown-linux-gnu
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }}
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Cross-compile powerpc64-unknown-linux-gnu
        env:
          TARGET: powerpc64-unknown-linux-gnu
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }}
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Cross-compile powerpc-unknown-linux-gnu
        env:
          TARGET: powerpc-unknown-linux-gnu
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }}
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Cross-compile wasm32-unknown-unknown
        env:
          TARGET: wasm32-unknown-unknown
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }}
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Cross-compile wasm32-wasip1
        env:
          TARGET: wasm32-wasip1
        run: |
          rustup target add ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }}
          cargo build --verbose --target ${{ env.TARGET }} --no-default-features
          cargo build --verbose --release --target ${{ env.TARGET }}
          cargo build --verbose --release --target ${{ env.TARGET }} --no-default-features
      - name: Count instructions
        if: ${{ runner.os == 'Linux' }}
        run: |
          cargo test --verbose --release --features count_instructions_test
          cargo test --verbose --release --no-default-features --features count_instructions_test

  miri:
    name: Run tests under Miri
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ubuntu-latest-cargo-nightly-${{ hashFiles('**/Cargo.lock','**/Cargo.toml') }}-miri
      - run: rustup toolchain install nightly --profile=minimal --no-self-update
      - run: rustup default nightly
      - run: rustup override set nightly
      - run: rustup component add miri
      - run: rustc --verbose --version
      - run: cargo --verbose --version
      - run: cargo miri test --verbose
      - run: cargo miri test --verbose --no-default-features