blob: 27c5ea1bd0d73b06fdc00d5508b26838ffeb335e [file] [log] [blame]
#!/bin/bash
# Copyright (C) 2024 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Run all the ravenwood tests + hoststubgen unit tests.
#
# Options:
#
# -s: "Smoke" test -- skip slow tests (SysUI, ICU)
#
# -x PCRE: Specify exclusion filter in PCRE
# Example: -x '^(Cts|hoststub)' # Exclude CTS and hoststubgen tests.
#
# -f PCRE: Specify inclusion filter in PCRE
# Regex to identify slow tests, in PCRE
SLOW_TEST_RE='^(SystemUiRavenTests|CtsIcuTestCasesRavenwood|CarSystemUIRavenTests)$'
smoke=0
include_re=""
exclude_re=""
smoke_exclude_re=""
dry_run=""
while getopts "sx:f:dtb" opt; do
case "$opt" in
s)
# Remove slow tests.
smoke_exclude_re="$SLOW_TEST_RE"
;;
x)
# Take a PCRE from the arg, and use it as an exclusion filter.
exclude_re="$OPTARG"
;;
f)
# Take a PCRE from the arg, and use it as an inclusion filter.
include_re="$OPTARG"
;;
d)
# Dry run
dry_run="echo"
;;
t)
# Redirect log to terminal
export RAVENWOOD_LOG_OUT=$(tty)
;;
b)
# Build only
ATEST=m
;;
'?')
exit 1
;;
esac
done
shift $(($OPTIND - 1))
all_tests=(hoststubgentest tiny-framework-dump-test hoststubgen-invoke-test ravenwood-stats-checker)
all_tests+=( $(${0%/*}/list-ravenwood-tests.sh) )
filter() {
local re="$1"
local grep_arg="$2"
if [[ "$re" == "" ]] ; then
cat # No filtering
else
grep $grep_arg -iP "$re"
fi
}
filter_in() {
filter "$1"
}
filter_out() {
filter "$1" -v
}
# Remove the slow tests.
targets=( $(
for t in "${all_tests[@]}"; do
echo $t | filter_in "$include_re" | filter_out "$smoke_exclude_re" | filter_out "$exclude_re"
done
) )
# Show the target tests
echo "Target tests:"
for t in "${targets[@]}"; do
echo " $t"
done
# Calculate the removed tests.
diff="$(diff <(echo "${all_tests[@]}" | tr ' ' '\n') <(echo "${targets[@]}" | tr ' ' '\n') | grep -v [0-9] )"
if [[ "$diff" != "" ]]; then
echo "Excluded tests:"
echo "$diff"
fi
run() {
echo "Running: ${@}"
"${@}"
}
run $dry_run ${ATEST:-atest} "${targets[@]}"