blob: 9116b387c103bb1834fe289af0551239b10a6146 [file] [log] [blame]
version: 2
jobs:
build:
docker:
- image: circleci/rust:latest
steps:
- checkout
- run:
name: Setup Rust
command: |
rustup toolchain uninstall nightly
rustup toolchain install nightly -c miri rust-src rustfmt
- run:
name: Version information
command: |
rustc --version
cargo --version
rustc +nightly --version
cargo +nightly --version
rustup --version
- run:
name: Calculate dependencies
command: cargo generate-lockfile
- restore_cache:
keys:
- cargo-cache-{{ arch }}-{{ checksum "Cargo.lock" }}
- run:
name: Check Formatting
command: |
rustfmt --version
cargo fmt --all -- --check --color=auto
- run:
name: Build all targets
command: cargo build --all --all-targets
- run:
name: Run all tests
command: cargo test --all
- run:
name: Run all tests under miri
command: |
cargo +nightly miri test
- run:
name: Run all tests under sanitizers
command: |
RUSTFLAGS="-Z sanitizer=address" cargo +nightly -Z build-std test --target x86_64-unknown-linux-gnu
RUSTFLAGS="-Z sanitizer=leak" cargo +nightly test -Z build-std --target x86_64-unknown-linux-gnu
RUSTFLAGS="-Z sanitizer=memory" cargo +nightly test -Z build-std --target x86_64-unknown-linux-gnu
- save_cache:
paths:
- /usr/local/cargo/registry
- target/debug/.fingerprint
- target/debug/build
- target/debug/deps
key: cargo-cache-{{ arch }}-{{ checksum "Cargo.lock" }}