mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	The main side effect is the upgrade of aho-corasick to 1.1, which contains a SIMD implementation for aarch64. Differential Revision: https://phabricator.services.mozilla.com/D188673
		
			
				
	
	
		
			95 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/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
 |