.PHONY: check coverage fuzz fuzz-loop fuzz-minimize fuzz-seeds vectors
.DEFAULT_GOAL := check
FUZZ_TIME ?= 180
FUZZ_JOBS ?= $(shell nproc 2>/dev/null || sysctl -n hw.ncpu)
FUZZ_SANITIZER ?= none
SEEDED = RUSTFLAGS='--cfg getrandom_backend="custom"'
check:
cargo fmt --all -- --check
cargo clippy --all-features -- -D warnings
cargo doc --all-features --no-deps
cargo hack test --each-feature
cargo test --all-features
coverage:
rm -rf target/llvm-cov-target
cargo +nightly llvm-cov --html --open
fuzz-seeds:
rm -rf fuzz/seeds
WIRE_SEEDS=$(CURDIR)/fuzz/seeds cargo test --features fuzz --quiet
for target in $$(cargo +nightly fuzz list); do \
test -d fuzz/seeds/$$target || { echo "no seeds for $$target"; exit 1; }; \
done
fuzz:
for target in $$(cargo +nightly fuzz list); do \
$(SEEDED) cargo +nightly fuzz run -s $(FUZZ_SANITIZER) -j $(FUZZ_JOBS) $$target fuzz/corpus/$$target fuzz/seeds/$$target -- -max_total_time=$(FUZZ_TIME) || exit 1; \
done
fuzz-minimize:
for target in $$(cargo +nightly fuzz list); do \
$(SEEDED) cargo +nightly fuzz cmin -s $(FUZZ_SANITIZER) $$target || exit 1; \
done
fuzz-loop:
while true; do $(MAKE) --no-print-directory fuzz || exit 1; done
vectors:
rm -rf vectors/client
$(SEEDED) CARGO_TARGET_DIR=target/vectors \
WIRE_VECTORS=$(CURDIR)/vectors cargo test --quiet --features fuzz mock::server