1*65138b42SAndroid Build Coastguard Worker#!/bin/bash 2*65138b42SAndroid Build Coastguard Worker 3*65138b42SAndroid Build Coastguard Worker# 4*65138b42SAndroid Build Coastguard Worker# Copyright (C) 2024 The Android Open Source Project 5*65138b42SAndroid Build Coastguard Worker# 6*65138b42SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 7*65138b42SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 8*65138b42SAndroid Build Coastguard Worker# You may obtain a copy of the License at 9*65138b42SAndroid Build Coastguard Worker# 10*65138b42SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 11*65138b42SAndroid Build Coastguard Worker# 12*65138b42SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 13*65138b42SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 14*65138b42SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15*65138b42SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 16*65138b42SAndroid Build Coastguard Worker# limitations under the License. 17*65138b42SAndroid Build Coastguard Worker# 18*65138b42SAndroid Build Coastguard Worker 19*65138b42SAndroid Build Coastguard Worker# Experimental, simple script to run a robolectric test in AOSP development environment. 20*65138b42SAndroid Build Coastguard Worker# Intended for faster iteration and more specific options than atest. 21*65138b42SAndroid Build Coastguard Worker# 22*65138b42SAndroid Build Coastguard Worker# In particular this script will: 23*65138b42SAndroid Build Coastguard Worker# - only run tests on current SDK (35) 24*65138b42SAndroid Build Coastguard Worker# - use sqlite native mode 25*65138b42SAndroid Build Coastguard Worker# - load native libandroid_runtime built from HEAD 26*65138b42SAndroid Build Coastguard Worker# - output stdout and stderr directly to terminal 27*65138b42SAndroid Build Coastguard Worker# 28*65138b42SAndroid Build Coastguard Worker# Usage: 29*65138b42SAndroid Build Coastguard Worker# [m -j <test_module_name> libandroid_runtime] 30*65138b42SAndroid Build Coastguard Worker# run-android-test.sh <test_module_name> <test_class_name> 31*65138b42SAndroid Build Coastguard Worker 32*65138b42SAndroid Build Coastguard Workerset -e 33*65138b42SAndroid Build Coastguard Worker 34*65138b42SAndroid Build Coastguard Workerif [[ ${ANDROID_HOST_OUT_TESTCASES:-"unset"} == "unset" ]]; then 35*65138b42SAndroid Build Coastguard Worker echo "ERROR: android build environment not initialized. Run build/envsetup.sh and lunch." 36*65138b42SAndroid Build Coastguard Worker exit -1 37*65138b42SAndroid Build Coastguard Workerfi 38*65138b42SAndroid Build Coastguard Worker 39*65138b42SAndroid Build Coastguard Workerif [ $# -lt 2 -o $# -gt 2 ]; then 40*65138b42SAndroid Build Coastguard Worker echo "ERROR: invalid number of arguments. Usage: run-android-test.sh <test_module_name> <test_class_name>." 41*65138b42SAndroid Build Coastguard Worker exit -1 42*65138b42SAndroid Build Coastguard Workerfi 43*65138b42SAndroid Build Coastguard Worker 44*65138b42SAndroid Build Coastguard WorkerMODULE_NAME=$1 45*65138b42SAndroid Build Coastguard WorkerCLASS_NAME=$2 46*65138b42SAndroid Build Coastguard Worker 47*65138b42SAndroid Build Coastguard Worker# uncomment this to wait for debugger to attach 48*65138b42SAndroid Build Coastguard Worker#DEBUGGER=' -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000 ' 49*65138b42SAndroid Build Coastguard WorkerDEBUGGER=' ' 50*65138b42SAndroid Build Coastguard Worker 51*65138b42SAndroid Build Coastguard Worker# android build system integration assumes working directory = test case directory. See https://robolectric.org/build-system-integration/ 52*65138b42SAndroid Build Coastguard Workercd $ANDROID_HOST_OUT_TESTCASES/$MODULE_NAME 53*65138b42SAndroid Build Coastguard Worker 54*65138b42SAndroid Build Coastguard Workerjava -cp $ANDROID_HOST_OUT_TESTCASES/$MODULE_NAME/$MODULE_NAME.jar:$ANDROID_HOST_OUT_TESTCASES/android-all/android-all-current-robolectric-r0.jar \ 55*65138b42SAndroid Build Coastguard Worker -Drobolectric.dependency.dir=$ANDROID_HOST_OUT_TESTCASES/android-all \ 56*65138b42SAndroid Build Coastguard Worker -Drobolectric.logging=stdout \ 57*65138b42SAndroid Build Coastguard Worker -Drobolectric.logging.enabled=true \ 58*65138b42SAndroid Build Coastguard Worker -Drobolectric.offline=true \ 59*65138b42SAndroid Build Coastguard Worker -Drobolectric.resourcesMode=BINARY \ 60*65138b42SAndroid Build Coastguard Worker -Drobolectric.graphicsMode=NATIVE \ 61*65138b42SAndroid Build Coastguard Worker -Drobolectric.usePreinstrumentedJars=false \ 62*65138b42SAndroid Build Coastguard Worker -Drobolectric.enabledSdks=36 \ 63*65138b42SAndroid Build Coastguard Worker -Drobolectric.alwaysIncludeVariantMarkersInTestName=true \ 64*65138b42SAndroid Build Coastguard Worker -Dandroid.robolectric.loadLibraryFromPath=true \ 65*65138b42SAndroid Build Coastguard Worker -Djava.library.path=$ANDROID_HOST_OUT/lib64:/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib \ 66*65138b42SAndroid Build Coastguard Worker -Drobolectric.sqliteMode=NATIVE \ 67*65138b42SAndroid Build Coastguard Worker --add-opens=java.base/java.io=ALL-UNNAMED \ 68*65138b42SAndroid Build Coastguard Worker $DEBUGGER \ 69*65138b42SAndroid Build Coastguard Worker org.junit.runner.JUnitCore \ 70*65138b42SAndroid Build Coastguard Worker $CLASS_NAME 71