Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Rust tests and Kani workflow #9

Merged
merged 2 commits into from
Jun 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/book.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@ on:
pull_request:
paths:
- 'doc/**'
- '.github/workflows/book.yml'
push:
paths:
- 'doc/**'
- '.github/workflows/book.yml'

jobs:
build:
Expand All @@ -27,8 +29,9 @@ jobs:
cargo install mdbook --version "^0.4" --locked
echo "${HOME}/.cargo/bin" >> $GITHUB_PATH

# Removed --locked for now since it is broken due to old proc_macro feature.
- name: Install linkchecker
run: cargo install mdbook-linkcheck --version "^0.7" --locked
run: cargo install mdbook-linkcheck --version "^0.7"
celinval marked this conversation as resolved.
Show resolved Hide resolved

- name: Build Documentation
run: mdbook build doc
Expand Down
56 changes: 56 additions & 0 deletions .github/workflows/kani.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Copyright Kani Contributors
# SPDX-License-Identifier: Apache-2.0 OR MIT

# This workflow is responsible for verifying the standard library with Kani.

name: Kani
on:
workflow_dispatch:
pull_request:
paths:
- 'library/**'
- '.github/workflows/kani.yml'
push:
paths:
- 'library/**'
- '.github/workflows/kani.yml'

defaults:
run:
shell: bash

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# Kani does not support windows.
os: [ubuntu-latest, macos-latest]
steps:
- name: Checkout Library
uses: actions/checkout@v4
with:
path: verify-rust-std
submodules: true

# We currently build Kani from a branch that tracks a rustc version compatible with this library version.
- name: Checkout `Kani`
uses: actions/checkout@v4
with:
repository: model-checking/kani
path: kani
ref: features/verify-rust-std

- name: Build `Kani`
working-directory: kani
run: |
cargo build-dev --release
echo "$(pwd)/scripts" >> $GITHUB_PATH

- name: Run tests
working-directory: verify-rust-std
env:
RUST_BACKTRACE: 1
run: |
kani verify-std -Z unstable-options ./library --target-dir "target"

66 changes: 66 additions & 0 deletions .github/workflows/rustc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Copyright Kani Contributors
# SPDX-License-Identifier: Apache-2.0 OR MIT

# This workflow is responsible for building the standard library using the bootstrap script
# and executing the Rust regression.

name: Rust Tests
on:
workflow_dispatch:
pull_request:
paths:
- 'library/**'
- 'rust-toolchain.toml'
- '.github/workflows/rustc.yml'
push:
paths:
- 'library/**'
- 'rust-toolchain.toml'
- '.github/workflows/rustc.yml'

defaults:
run:
shell: bash

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
# Note windows-latest is currently failing.
os: [ubuntu-latest, macos-latest]
steps:
- name: Checkout Library
uses: actions/checkout@v4
with:
path: head

- name: Checkout `upstream/master`
uses: actions/checkout@v4
with:
repository: rust-lang/rust
path: upstream
fetch-depth: 0
submodules: true

# Run rustc twice in case the toolchain needs to be installed.
# Retrieve the commit id from the `rustc --version`. Output looks like:
# `rustc 1.80.0-nightly (84b40fc90 2024-05-27)`
- name: Checkout matching commit
run: |
cd head
rustc --version
COMMIT_ID=$(rustc --version | sed -e "s/.*(\(.*\) .*/\1/")
cd ../upstream
git checkout ${COMMIT_ID}

- name: Copy Library
run: |
rm -rf upstream/library
cp -r head/library upstream

- name: Run tests
working-directory: upstream
run: |
./configure --set=llvm.download-ci-llvm=true
./x test --stage 0 library/std
9 changes: 9 additions & 0 deletions rust-toolchain.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Copyright Kani Contributors
# SPDX-License-Identifier: Apache-2.0 OR MIT

# This version should be updated whenever we update the version of the Rust
# standard library we currently track.
celinval marked this conversation as resolved.
Show resolved Hide resolved

[toolchain]
channel = "nightly-2024-05-23"
components = ["llvm-tools-preview", "rustc-dev", "rust-src", "rustfmt"]