mirror of
https://github.com/anomalyco/hex.git
synced 2026-11-15 14:16:56 +08:00
56 lines
2.0 KiB
Bash
Executable File
56 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# The local check loop.
|
|
#
|
|
# scripts/check fmt, clippy, then every test
|
|
# scripts/check meeting::query fmt, then only the tests matching the filters
|
|
#
|
|
# Tests run through cargo-nextest (.config/nextest.toml): each test is its own
|
|
# process, and one that hangs is killed and reported by name. Exit codes:
|
|
# 10 fmt, 11 clippy, 12 tests, 13 code-shape, 14 Nix pins. NEXTEST_PROFILE=ci
|
|
# selects CI's profile.
|
|
# Tests build with the `capture` feature, so the debug-only capture
|
|
# experiment's code (macOS) is tested too. `crates/capture` and
|
|
# `crates/capture-core` sit outside the workspace (Cargo.toml), so on macOS
|
|
# they are named to be linted and tested.
|
|
set -uo pipefail
|
|
|
|
cd "$(dirname "${BASH_SOURCE[0]}")/.."
|
|
|
|
packages=(--workspace)
|
|
if [[ "$(uname -s)" == Darwin ]]; then
|
|
# zbus depends on the crates.io `hex`, so the root package is named with its
|
|
# version. Not the full `cargo pkgid`: its path URL names this checkout,
|
|
# which matches nothing once HiveMind runs cargo in a copy on another Mac.
|
|
pkgid="$(cargo pkgid)"
|
|
packages=(-p "hex@${pkgid##*[#@]}" -p scrawl-router -p scrawl-capture -p capture-core)
|
|
fi
|
|
|
|
stage() {
|
|
printf '\n==> %s\n' "$1"
|
|
}
|
|
|
|
stage "fmt"
|
|
cargo fmt --all --check || exit 10
|
|
|
|
stage "code-shape"
|
|
python3 scripts/code-shape.py --check || exit 13
|
|
|
|
stage "nix pins"
|
|
python3 scripts/test-check-nix-git-pins.py || exit 14
|
|
python3 scripts/check-nix-git-pins.py || exit 14
|
|
|
|
if [[ $# -eq 0 ]]; then
|
|
stage "clippy"
|
|
cargo clippy --locked "${packages[@]}" --all-targets --features onnx-benchmark -- -D warnings || exit 11
|
|
fi
|
|
|
|
if command -v cargo-nextest >/dev/null 2>&1; then
|
|
stage "test (nextest${1:+: $*})"
|
|
cargo nextest run --locked "${packages[@]}" --no-tests=warn "$@" || exit 12
|
|
else
|
|
stage "test (cargo test${1:+: $*})"
|
|
echo "cargo-nextest is not installed, so a hung test stalls the run without" >&2
|
|
echo "a name. Install it with: brew install cargo-nextest" >&2
|
|
cargo test --locked "${packages[@]}" -- "$@" || exit 12
|
|
fi
|