fix: Handle i64::MIN / -1 special case #35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Copyright (c) Microsoft Corporation. All rights reserved. | |
| # | |
| name: verus | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| pull_request: | |
| branches: [ "main" ] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| # This workflow only checks out code, downloads a pinned Verus release asset, | |
| # and runs verification. It never writes to the repository, so restrict the | |
| # GITHUB_TOKEN to read-only access to repository contents. | |
| permissions: | |
| contents: read | |
| jobs: | |
| verify: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Setup Rust toolchain | |
| uses: ./.github/actions/toolchains/rust | |
| with: | |
| components: "" | |
| - name: Cache cargo | |
| uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 | |
| with: | |
| shared-key: ${{ runner.os }}-regorus-verus | |
| - name: Install Verus and run verification | |
| shell: bash | |
| run: | | |
| set -euxo pipefail | |
| asset_url=https://github.com/verus-lang/verus/releases/download/release%2F0.2026.07.12.0b42f4c/verus-0.2026.07.12.0b42f4c-x86-linux.zip | |
| asset_sha256=f6f4f5d08e07d3e1ad721d775bda5ba96b9dd0c73b48fc17f2e071866fbd01c0 | |
| test -n "$asset_url" | |
| curl -fsSL "$asset_url" -o verus.zip | |
| # Verify the download integrity before trusting/executing its contents. | |
| echo "${asset_sha256} verus.zip" | sha256sum --check --strict | |
| unzip -q verus.zip -d verus-dist | |
| # Search under an absolute path so that `find` yields absolute paths; | |
| # this keeps the PATH entries below valid regardless of the working | |
| # directory. | |
| verus_bin="$(find "$PWD/verus-dist" -type f -name verus -perm -u+x | head -n1)" | |
| cargo_verus_bin="$(find "$PWD/verus-dist" -type f -name cargo-verus -perm -u+x | head -n1)" | |
| version_json="$(find "$PWD/verus-dist" -type f -name version.json | head -n1)" | |
| test -n "$verus_bin" | |
| test -n "$cargo_verus_bin" | |
| test -n "$version_json" | |
| # Verus is built against a specific Rust toolchain and refuses to run | |
| # against any other version. Read the required toolchain from the | |
| # release metadata so we track it automatically instead of hardcoding. | |
| required_toolchain="$(sed -n 's/.*"toolchain"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' "$version_json")" | |
| test -n "$required_toolchain" | |
| echo "Verus requires Rust toolchain: $required_toolchain" | |
| # Install the exact toolchain Verus expects, including the extra | |
| # components (rustc-dev, llvm-tools) that Verus links against and that | |
| # are not part of the default rustup profile. | |
| rustup toolchain install "$required_toolchain" \ | |
| --profile minimal \ | |
| --component rustc-dev --component llvm-tools --component rustfmt | |
| # Force cargo/rustc to resolve to the Verus toolchain for the commands | |
| # below, overriding any repository/directory toolchain override. | |
| export RUSTUP_TOOLCHAIN="$required_toolchain" | |
| # Put cargo-verus on PATH for the commands below. | |
| export PATH="$(dirname "$cargo_verus_bin"):$(dirname "$verus_bin"):$PATH" | |
| cargo verus --help | |
| cargo fetch --locked | |
| cargo verus verify --locked --features verus |