blob: 424ab3436c99f4afb61409fdfaa755c0654d4311 [file]
#!/bin/sh
# This file contains some utilty function to build and run tests without atest.
#
# Motivated by http://go/sysui-soong-gradle-comparison.
#
# Usage:
# $ source build/envsetup.sh
# $ lunch <target>
# $ source ${ANDROID_BUILD_TOP}/frameworks/base/packages/SystemUI/scripts/test_utils.sh
#
# Note: sourcing this script will take ~10s because of the call to get_build_var, this is expected.
echo "Computing TARGET_ARCH..."
export TARGET_ARCH=$(get_build_var TARGET_ARCH)
echo "Exported TARGET_ARCH=$TARGET_ARCH"
# Build and push an `android_test` test target.
#
# Usage: run_class_tests <test_app_target>
#
# Examples:
# $ make_tests SystemUITests
# $ make_tests PlatformComposeSceneTransitionLayoutTests
make_tests() {
echo "Building $1..."
m $1 -j && \
echo "Pushing $1..." && \
adb install -t -r -g $ANDROID_PRODUCT_OUT/testcases/$1/`get_build_var TARGET_ARCH`/$1.apk
}
# Run one or more tests from a test class.
#
# Usage: run_class_tests <test_app_package> <test_class>[#function] [instrumentation]
#
# Examples:
# $ make_tests SystemUITests && \
# run_class_tests com.android.systemui.tests com.android.systemui.scene.domain.interactor.SceneInteractorTest#allContentKeys android.testing.TestableInstrumentation
# $ make_tests PlatformComposeSceneTransitionLayoutTests && \
# run_class_tests com.android.compose.animation.scene.tests com.android.compose.animation.scene.ElementTest
# $ make_tests SystemUIGoogleScreenshotTests && \
# run_class_tests com.android.systemui.testing.screenshot.test com.android.systemui.qs.footer.FooterActionsScreenshotTest
run_class_tests() {
echo "Running tests in $2..."
echo "Note: This will skip all steps defined in AndroidTest.xml, so target preparers or xml defined setup steps won't run"
adb shell am instrument -w -e class $2 $1/${3:-androidx.test.runner.AndroidJUnitRunner}
}
# Run one or more tests from a class.
#
# Usage: run_package_tests <test_app_package> <test_package> [instrumentation]
#
# Example:
# $ make_tests SystemUITests && \
# run_package_tests com.android.systemui.tests com.android.systemui.scene.shared.model android.testing.TestableInstrumentation
run_package_tests() {
echo "Running tests in $2..."
echo "Note: This will skip all steps defined in AndroidTest.xml, so target preparers or xml defined setup steps won't run"
adb shell am instrument -w -e package $2 $1/${3:-androidx.test.runner.AndroidJUnitRunner}
}
# Run one or more tests from a test class in SystemUI-tests.
#
# This is just a helper to make it easier to build and run tests covering SystemUI-core.
#
# Usage: make_run_sysui_tests <test_class>[#function]
#
# Example:
# $ make_run_sysui_tests com.android.systemui.scene.domain.interactor.SceneInteractorTest
# $ make_run_sysui_tests com.android.systemui.scene.domain.interactor.SceneInteractorTest#allContentKeys
make_run_sysui_tests() {
make_tests SystemUITests && run_class_tests com.android.systemui.tests $1 android.testing.TestableInstrumentation
}