xref: /aosp_15_r20/frameworks/layoutlib/bridge/tests/run_tests.sh (revision fc3927be90a325f95c74a9043993a80ef388dc46)
1#!/bin/bash
2set -u
3
4readonly OUT_DIR="$1"
5readonly DIST_DIR="$2"
6readonly SCRIPT_DIR="$(dirname "$0")"
7readonly BASE_DIR=`readlink -m ${SCRIPT_DIR}/../../../../`
8echo "BASE_DIR: $BASE_DIR"
9readonly FAILURE_DIR=layoutlib-test-failures
10readonly FAILURE_ZIP=layoutlib-test-failures.zip
11
12readonly CLEAN_TMP_FILES=1
13readonly USE_SOONG=1
14
15readonly APP_NAME="regression"
16#readonly APP_NAME="test_HelloActivity"
17
18STUDIO_JDK="${BASE_DIR}/prebuilts/jdk/jdk21/linux-x86"
19NATIVE_LIBRARIES="${BASE_DIR}/out/host/linux-x86/lib64/"
20JAVA_LIBRARIES="${BASE_DIR}/out/host/common/obj/JAVA_LIBRARIES/"
21HOST_LIBRARIES="${BASE_DIR}/out/host/linux-x86"
22SDK="${BASE_DIR}/out/host/linux-x86/sdk/sdk*/android-sdk*"
23SDK_REPO="${BASE_DIR}/out/host/linux-x86/sdk-repo"
24FONT_DIR="${BASE_DIR}/out/host/common/obj/PACKAGING/fonts_intermediates"
25HYPHEN_DATA_DIR="${BASE_DIR}/out/host/common/obj/PACKAGING/hyphen_intermediates"
26KEYBOARD_DIR="${BASE_DIR}/out/host/common/obj/PACKAGING/keyboards_intermediates"
27ICU_DATA_PATH="${BASE_DIR}/out/host/linux-x86/com.android.i18n/etc/icu/icudt75l.dat"
28TMP_DIR=${OUT_DIR}"/layoutlib_tmp"
29
30PLATFORM=${TMP_DIR}/"android"
31
32if [ ! -d $TMP_DIR ]; then
33    # Copy resources to a temp directory
34    mkdir -p ${TMP_DIR} ${PLATFORM} ${TMP_DIR}/build-tools ${TMP_DIR}/compiled ${TMP_DIR}/manifest
35
36    cp -r ${SDK}/platforms/android*/** ${PLATFORM}
37
38    # Unzip build-tools to access aapt2
39    unzip -q ${SDK_REPO}/sdk-repo-linux-build-tools.zip -d ${TMP_DIR}/build-tools
40
41    # Compile 9-patch files
42    echo \
43'<?xml version="1.0" encoding="utf-8"?>
44<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.android.layoutlib" />' \
45> ${TMP_DIR}/manifest/AndroidManifest.xml
46    find ${SDK}/platforms/android*/data/res -name "*.9.png" -print0 | xargs -0 ${TMP_DIR}/build-tools/android-*/aapt2 compile -o ${TMP_DIR}/compiled/
47    find ${TMP_DIR}/compiled -name "*.flat" -print0 | xargs -0 -s 1000000 ${TMP_DIR}/build-tools/android-*/aapt2 link -o ${TMP_DIR}/compiled.apk --manifest ${TMP_DIR}/manifest/AndroidManifest.xml -R
48    unzip -q ${TMP_DIR}/compiled.apk -d ${TMP_DIR}
49    for f in ${TMP_DIR}/res/*; do mv "$f" "${f/-v4/}";done
50    cp -RL ${TMP_DIR}/res ${PLATFORM}/data
51fi
52
53
54TEST_JARS="${HOST_LIBRARIES}/framework/layoutlib-tests.jar"
55GRADLE_RES="-Dtest_res.dir=${SCRIPT_DIR}/res"
56
57# Run layoutlib tests
58#DEBUGGER=' -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000 '
59DEBUGGER=' '
60
61set -x
62${STUDIO_JDK}/bin/java -ea $DEBUGGER \
63    -Dnative.lib.path=${NATIVE_LIBRARIES} \
64    -Dfont.dir=${FONT_DIR} \
65    -Dicu.data.path=${ICU_DATA_PATH} \
66    -Dhyphen.data.dir=${HYPHEN_DATA_DIR} \
67    -Dkeyboard.dir=${KEYBOARD_DIR} \
68    -Dplatform.dir=${PLATFORM} \
69    -Dtest_failure.dir=${OUT_DIR}/${FAILURE_DIR} \
70    ${GRADLE_RES} \
71    -cp ${TEST_JARS} \
72    org.junit.runner.JUnitCore \
73    com.android.layoutlib.bridge.intensive.Main
74test_exit_code=$?
75set +x
76
77
78# Create zip of all failure screenshots
79rm -f ${OUT_DIR}/${FAILURE_ZIP}
80if [[ -d "${OUT_DIR}/${FAILURE_DIR}" ]]; then
81    zip -q -j -r ${OUT_DIR}/${FAILURE_ZIP} ${OUT_DIR}/${FAILURE_DIR}
82fi
83
84# Move failure zip to dist directory if specified
85if [[ -d "${DIST_DIR}" ]] && [[ -e "${OUT_DIR}/${FAILURE_ZIP}" ]]; then
86    mv ${OUT_DIR}/${FAILURE_ZIP} ${DIST_DIR}
87fi
88
89# Clean
90if [[ $CLEAN_TMP_FILES -eq 1 ]]; then
91  rm -rf ${TMP_DIR}
92  rm -rf ${OUT_DIR}/${FAILURE_DIR}
93fi
94
95exit ${test_exit_code}
96