mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-26 08:18:18 +00:00
173e5ddc06
build(make): require cargo-nextest for make test with explicit escape hatch (backlog#1153 infra-14) cargo-nextest changes test semantics — it runs each test in its own process (so serial_test's #[serial] mutex does not serialize across tests) and is the only runner that honours .config/nextest.toml [test-groups] (e.g. the ecstore-serial-flaky serialization guard). CI installs and runs nextest, but `make test` only warned when it was missing and then silently fell back to `cargo test`, which runs with different serialization behaviour than CI and can mask or invent flakes. Make cargo-nextest a hard dependency of `make test`: - Missing nextest now fails `make test` with a clear message and install instructions (`cargo install cargo-nextest --locked` or a prebuilt binary via https://nexte.st/docs/installation/). - Set RUSTFS_ALLOW_CARGO_TEST_FALLBACK=1 to opt into the plain `cargo test` fallback anyway; it prints a loud warning that serialization semantics differ from CI and .config/nextest.toml test-groups will NOT apply. - The check stays cheap (command -v). The warn-only test-deps prerequisite is dropped from check.mak in favour of recipe-level gating. Install docs live in the make-layer error message plus a header comment in tests.mak, with a single-line note in CONTRIBUTING.md (kept minimal to avoid conflicting with #4667 / infra-9, which rewrites the verification sections). No CI change: .github/workflows/ci.yml already runs cargo nextest and .github/actions/setup/action.yml already installs it. Refs rustfs/backlog#1153 (infra-14), master plan #1155. Signed-off-by: Zhengchao An <anzhengchao@gmail.com>
27 lines
951 B
Makefile
27 lines
951 B
Makefile
## —— Check and Inform Dependencies ----------------------------------------------------------------
|
|
|
|
# Fatal check
|
|
# Checks all required dependencies and exits with error if not found
|
|
# (e.g., cargo, rustfmt)
|
|
check-%:
|
|
@command -v $* >/dev/null 2>&1 || { \
|
|
echo >&2 "❌ '$*' is not installed."; \
|
|
exit 1; \
|
|
}
|
|
|
|
# Warning-only check
|
|
# Checks for optional dependencies and issues a warning if not found
|
|
warn-%:
|
|
@command -v $* >/dev/null 2>&1 || { \
|
|
echo >&2 "⚠️ '$*' is not installed."; \
|
|
}
|
|
|
|
# For checking dependencies use check-<dep-name> or warn-<dep-name>
|
|
#
|
|
# NOTE: cargo-nextest is a HARD dependency of `make test`, gated inside the
|
|
# test recipe itself (with a RUSTFS_ALLOW_CARGO_TEST_FALLBACK=1 escape hatch)
|
|
# rather than a warn-only prerequisite here — see .config/make/tests.mak.
|
|
.PHONY: core-deps fmt-deps
|
|
core-deps: check-cargo ## Check core dependencies
|
|
fmt-deps: check-rustfmt ## Check lint and formatting dependencies
|