#!/bin/sh
set -e
export RUSTFLAGS="-D warnings"
export RUSTDOCFLAGS="-D warnings"
run_tests() {
	for release in "" "--release"; do
		cargo $1 test $release --no-default-features  # Not very useful without std or hashbrown, but hey, it works! (Doctests emit an error about needing a global allocator, but it exits zero anyway. ¯\_(ツ)_/¯)
		cargo $1 test $release --no-default-features --features hashbrown
		cargo $1 test $release
		cargo $1 test $release --all-features
	done
}

# We’d like to test with the oldest declared-supported version of *all* our dependencies.
# That means Rust 1.36.0 + hashbrown 0.1.1.
# Hence the different lock file.
# (Also Rust 1.36.0 can’t read the latest lock file format.)
cp test-oldest-Cargo.lock Cargo.lock
run_tests +1.36.0
rm Cargo.lock
run_tests

cargo clippy
cargo bench
cargo doc