blob: 9bbb859f5c3dc2a0216df0af2d91b0dba25e6468 [file] [log] [blame]
#!/bin/bash
# Copyright (C) 2023 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.
set -e
# Script to run a "Ravenwood" host side test.
#
# A proper way to run these tests is to use `atest`, but `atest` has a known issue of loading
# unrelated jar files as the class path, so for now we use this script to run host side tests.
# Copy (with some changes) some functions from ../common.sh, so this script can be used without it.
m() {
if (( $SKIP_BUILD )) ; then
echo "Skipping build: $*" 1>&2
return 0
fi
run ${ANDROID_BUILD_TOP}/build/soong/soong_ui.bash --make-mode "$@"
}
run() {
echo "Running: $*" 1>&2
"$@"
}
run_junit_test_jar() {
local jar="$1"
echo "Starting test: $jar ..."
run cd "${jar%/*}"
run ${JAVA:-java} $JAVA_OPTS \
-cp $jar \
org.junit.runner.JUnitCore \
com.android.hoststubgen.hosthelper.HostTestSuite || return 1
return 0
}
help() {
cat <<'EOF'
run-ravenwood-test -- Run Ravenwood host tests
Usage:
run-ravenwood-test [options] MODULE-NAME ...
Options:
-h: Help
-t: Run test only, without building
-b: Build only, without running
Example:
run-ravenwood-test HostStubGenTest-framework-test-host-test
EOF
}
#-------------------------------------------------------------------------
# Parse options
#-------------------------------------------------------------------------
build=0
test=0
while getopts "htb" opt; do
case "$opt" in
h) help; exit 0 ;;
t)
test=1
;;
b)
build=1
;;
esac
done
shift $(($OPTIND - 1))
# If neither -t nor -b is provided, then build and run./
if (( ( $build + $test ) == 0 )) ; then
build=1
test=1
fi
modules=("${@}")
if (( "${#modules[@]}" == 0 )); then
help
exit 1
fi
#-------------------------------------------------------------------------
# Build
#-------------------------------------------------------------------------
if (( $build )) ; then
run m "${modules[@]}"
fi
#-------------------------------------------------------------------------
# Run
#-------------------------------------------------------------------------
failures=0
if (( test )) ; then
for module in "${modules[@]}"; do
if run_junit_test_jar "$ANDROID_BUILD_TOP/out/host/linux-x86/testcases/${module}/${module}.jar"; then
: # passed.
else
failures=$(( failures + 1 ))
fi
done
if (( $failures > 0 )) ; then
echo "$failures test jar(s) failed." 1>&2
exit 2
fi
fi
exit 0