| #!/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 | |
| } |