#!/bin/bash

# This is a convenience script for running a broad swath of tests across
# features. We don't test the complete space, since the complete space is quite
# large. Hopefully once we migrate the test suite to better infrastructure
# (like regex-automata), we'll be able to test more of the space.
echo "===== DEFAULT FEATURES ==="
cargo test

echo "===== DOC TESTS ==="
cargo test --doc

features=(
    "std"
    "std unicode"
    "std unicode-perl"
    "std perf"
    "std perf-cache"
    "std perf-dfa"
    "std perf-inline"
    "std perf-literal"
)
for f in "${features[@]}"; do
    echo "===== FEATURE: $f (default) ==="
    cargo test --test default --no-default-features --features "$f"
    echo "===== FEATURE: $f (default-bytes) ==="
    cargo test --test default-bytes --no-default-features --features "$f"
done
