Skip to content

Add tree restore

Add tree restore #150

Workflow file for this run

# Test these locally using [act]
# `act --container-architecture linux/amd64 -v -j build_and_push`
# [act]: https://github.com/nektos/act
name: Tests & linter
on:
push:
branches:
- main
pull_request:
types: [opened,synchronize,reopened]
branches:
- main
env:
RUST_VERSION: "1.70"
NIGHTLY_VERSION: nightly-2023-05-31
CARGO_TERM_COLOR: always
# Skip incremental build and debug info generation in CI
CARGO_INCREMENTAL: 0
CARGO_PROFILE_DEV_DEBUG: 0
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.NIGHTLY_VERSION }}
override: true
components: rustfmt, clippy
- name: Install protobuf-compiler
run: sudo apt-get install -y protobuf-compiler
- name: Cache
uses: actions/cache@v3
continue-on-error: false
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ env.RUST_VERSION }}-${{ env.NIGHTLY_VERSION }}-cargo-lint-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ env.RUST_VERSION }}-${{ env.NIGHTLY_VERSION }}-cargo-lint-
- name: Install cargo-sort
uses: actions-rs/install@v0.1
with:
crate: cargo-sort
version: latest
- name: Check formatting
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
- name: Check Cargo.toml formatting
run: cargo sort --check --check-format
- uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --locked --features "bench, mimalloc" --all-targets
- name: Check docs
uses: actions-rs/cargo@v1
with:
command: doc
args: --locked --features "bench, mimalloc" --no-deps --document-private-items
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.NIGHTLY_VERSION }}
override: true
- name: Install protobuf-compiler
run: sudo apt-get install -y protobuf-compiler
- name: Cache
uses: actions/cache@v3
continue-on-error: false
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ env.RUST_VERSION }}-${{ env.NIGHTLY_VERSION }}-cargo-test-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ env.RUST_VERSION }}-${{ env.NIGHTLY_VERSION }}-cargo-test-
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly
# Cargo doc test is not included in `--all-targets`
# See <https://github.com/rust-lang/cargo/issues/6669>
# Cargo doc test also doesn't support `--no-run`, so we run it but
# have it just print `--help`.
- name: Build tests
run: |
cargo test --locked --features "bench, mimalloc" --all-targets --no-run
cargo test --locked --features "bench, mimalloc" --doc -- --help
- name: Run tests
run: |
cargo test --locked --features "bench, mimalloc" --all-targets -- --nocapture
cargo test --locked --features "bench, mimalloc" --doc -- --nocapture
codecov:
# See <https://doc.rust-lang.org/nightly/unstable-book/compiler-flags/source-based-code-coverage.html>
name: Coverage
runs-on: ubuntu-latest
env:
RUSTFLAGS: -Cinstrument-coverage
RUSTDOCFLAGS: -C instrument-coverage -Z unstable-options --persist-doctests target/debug/doctestbins
LLVM_PROFILE_FILE: profile-%m.profraw
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ env.NIGHTLY_VERSION }}
override: true
components: llvm-tools-preview
- name: Install protobuf-compiler
run: sudo apt-get install -y protobuf-compiler
- name: Cache
uses: actions/cache@v3
continue-on-error: false
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ env.RUST_VERSION }}-${{ env.NIGHTLY_VERSION }}-cargo-cov-${{ hashFiles('**/Cargo.lock') }}-cov
restore-keys: ${{ env.RUST_VERSION }}-${{ env.NIGHTLY_VERSION }}-cargo-cov-
- name: Install cargo-binutils
run: cargo install cargo-binutils
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly
- name: Build tests with coverage
run: |
cargo test --locked --features "bench, mimalloc" --all-targets --no-fail-fast --no-run
cargo test --locked --features "bench, mimalloc" --doc --no-fail-fast -- --help
- name: Run tests with coverage
run: |
cargo test --locked --features "bench, mimalloc" --all-targets --no-fail-fast -- --nocapture
cargo test --locked --features "bench, mimalloc" --doc --no-fail-fast
- name: Merge execution traces
run: cargo profdata -- merge -sparse $(find . -iname "profile-*.profraw") -o profile.profdata
- name: Export to lcov format for codecov
# See <https://doc.rust-lang.org/nightly/unstable-book/compiler-flags/instrument-coverage.html#including-doc-tests>
run:
cargo cov -- export
--format=lcov > profile.lcov
--instr-profile=profile.profdata
$(
for file in
$(
cargo test --locked --features "bench, mimalloc" --all-targets
--no-fail-fast --no-run --message-format=json
| jq -r "select(.profile.test == true) | .filenames[]"
| grep -v dSYM -
)
target/debug/doctestbins/*/rust_out;
do
[[ -x $file ]] && printf "%s %s " -object $file ;
done
)
- name: Submit to codecov.io
uses: codecov/codecov-action@v3.1.1
with:
token: ${{ secrets.CODECOV_TOKEN }} # Optional for public repos
flags: test
fail_ci_if_error: true
verbose: true
cargo-vet:
name: Vet Dependencies
runs-on: ubuntu-latest
env:
CARGO_VET_VERSION: 0.7.0
steps:
- uses: actions/checkout@master
- name: Install Rust
run: rustup update stable && rustup default stable
- uses: actions/cache@v3
with:
path: ${{ runner.tool_cache }}/cargo-vet
key: cargo-vet-bin-${{ env.CARGO_VET_VERSION }}
- name: Add the tool cache directory to the search path
run: echo "${{ runner.tool_cache }}/cargo-vet/bin" >> $GITHUB_PATH
- name: Ensure that the tool cache is populated with the cargo-vet binary
run: cargo install --root ${{ runner.tool_cache }}/cargo-vet --version ${{ env.CARGO_VET_VERSION }} cargo-vet
- name: Invoke cargo-vet
run: cargo vet --locked