summaryrefslogtreecommitdiffstats
path: root/third_party/rust/regex-automata/test
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/regex-automata/test')
-rwxr-xr-xthird_party/rust/regex-automata/test95
1 files changed, 95 insertions, 0 deletions
diff --git a/third_party/rust/regex-automata/test b/third_party/rust/regex-automata/test
new file mode 100755
index 0000000000..df3e5ae98d
--- /dev/null
+++ b/third_party/rust/regex-automata/test
@@ -0,0 +1,95 @@
+#!/bin/bash
+
+# This is a script that attempts to *approximately* exhaustively run the test
+# suite for regex-automata. The main reason for why 'cargo test' isn't enough
+# is because of crate features. regex-automata has a ton of them. This script
+# tests many of those feature combinations (although not all) to try to get
+# decent coverage in a finite amount of time.
+
+set -e
+
+# cd to the directory containing this crate's Cargo.toml so that we don't need
+# to pass --manifest-path to every `cargo` command.
+cd "$(dirname "$0")"
+
+echo "===== ALL FEATURES TEST ==="
+cargo test --all-features
+
+# Man I don't *want* to have this many crate features, but... I really want
+# folks to be able to slim the crate down to just the things they want. But
+# the main downside is that I just can't feasibly test every combination of
+# features because there are too many of them. Sad, but I'm not sure if there
+# is a better alternative.
+features=(
+ ""
+ "unicode-word-boundary"
+ "unicode-word-boundary,syntax,unicode-perl"
+ "unicode-word-boundary,syntax,dfa-build"
+ "nfa"
+ "dfa"
+ "hybrid"
+ "nfa,dfa"
+ "nfa,hybrid"
+ "dfa,hybrid"
+ "dfa-onepass"
+ "nfa-pikevm"
+ "nfa-backtrack"
+ "std"
+ "alloc"
+ "syntax"
+ "syntax,nfa-pikevm"
+ "syntax,hybrid"
+ "perf-literal-substring"
+ "perf-literal-multisubstring"
+ "meta"
+ "meta,nfa-backtrack"
+ "meta,hybrid"
+ "meta,dfa-build"
+ "meta,dfa-onepass"
+ "meta,nfa,dfa,hybrid,nfa-backtrack"
+ "meta,nfa,dfa,hybrid,nfa-backtrack,perf-literal-substring"
+ "meta,nfa,dfa,hybrid,nfa-backtrack,perf-literal-multisubstring"
+)
+for f in "${features[@]}"; do
+ echo "===== LIB FEATURES: $f ==="
+ # It's actually important to do a standard 'cargo build' in addition to a
+ # 'cargo test'. In particular, in the latter case, the dev-dependencies may
+ # wind up enabling features in dependencies (like memchr) that make it look
+ # like everything is well, but actually isn't. For example, the 'regex-test'
+ # dev-dependency uses 'bstr' and enables its 'std' feature, which in turn
+ # unconditionally enables 'memchr's 'std' feature. Since we're specifically
+ # looking to test that certain feature combinations work as expected, this
+ # can lead to things testing okay, but would actually fail to build. Yikes.
+ cargo build --no-default-features --lib --features "$f"
+ cargo test --no-default-features --lib --features "$f"
+done
+
+# We can also run the integration test suite on stripped down features too.
+# But the test suite doesn't do well with things like 'std' and 'unicode'
+# disabled, so we always enable them.
+features=(
+ "std,unicode,syntax,nfa-pikevm"
+ "std,unicode,syntax,nfa-backtrack"
+ "std,unicode,syntax,hybrid"
+ "std,unicode,syntax,dfa-onepass"
+ "std,unicode,syntax,dfa-search"
+ "std,unicode,syntax,dfa-build"
+ "std,unicode,meta"
+ # This one is a little tricky because it causes the backtracker to get used
+ # in more instances and results in failing tests for the 'earliest' tests.
+ # The actual results are semantically consistent with the API guarantee
+ # (the backtracker tends to report greater offsets because it isn't an FSM),
+ # but our tests are less flexible than the API guarantee and demand offsets
+ # reported by FSM regex engines. (Which is... all of them except for the
+ # backtracker.)
+ # "std,unicode,meta,nfa-backtrack"
+ "std,unicode,meta,hybrid"
+ "std,unicode,meta,dfa-onepass"
+ "std,unicode,meta,dfa-build"
+ "std,unicode,meta,nfa,dfa-onepass,hybrid"
+)
+for f in "${features[@]}"; do
+ echo "===== INTEGRATION FEATURES: $f ==="
+ cargo build --no-default-features --lib --features "$f"
+ cargo test --no-default-features --test integration --features "$f"
+done