xref: /aosp_15_r20/test/robolectric-extensions/scripts/run-android-test.sh (revision 65138b425dccfc44450bdb4288f3158d12e8336e)
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