aboutsummaryrefslogtreecommitdiff
path: root/bridge/tests/run_tests.sh
blob: 91e88b6c94c96d14cca6c14b7a30456a8066d169 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/bash
set -u

readonly OUT_DIR="$1"
readonly DIST_DIR="$2"
readonly SCRIPT_DIR="$(dirname "$0")"
readonly BASE_DIR=`readlink -m ${SCRIPT_DIR}/../../../../`
echo "BASE_DIR: $BASE_DIR"
readonly FAILURE_DIR=layoutlib-test-failures
readonly FAILURE_ZIP=layoutlib-test-failures.zip

readonly CLEAN_TMP_FILES=0
readonly USE_SOONG=1

readonly APP_NAME="regression"
#readonly APP_NAME="test_HelloActivity"

STUDIO_JDK="${BASE_DIR}/prebuilts/jdk/jdk17/linux-x86"
MISC_COMMON="${BASE_DIR}/prebuilts/misc/common"
OUT_INTERMEDIATES="${BASE_DIR}/out/soong/.intermediates"
NATIVE_LIBRARIES="${BASE_DIR}/out/host/linux-x86/lib64/"
JAVA_LIBRARIES="${BASE_DIR}/out/host/common/obj/JAVA_LIBRARIES/"
HOST_LIBRARIES="${BASE_DIR}/out/host/linux-x86/"
SDK="${BASE_DIR}/out/host/linux-x86/sdk/sdk*/android-sdk*"
SDK_REPO="${BASE_DIR}/out/host/linux-x86/sdk-repo"
FONT_DIR="${BASE_DIR}/out/host/common/obj/PACKAGING/fonts_intermediates"
KEYBOARD_DIR="${BASE_DIR}/out/host/common/obj/PACKAGING/keyboards_intermediates"
ICU_DATA_PATH="${BASE_DIR}/out/host/linux-x86/com.android.i18n/etc/icu/icudt72l.dat"
TMP_DIR=${OUT_DIR}"/layoutlib_tmp"

PLATFORM=${TMP_DIR}/"android"

if [ ! -d $TMP_DIR ]; then
    # Copy resources to a temp directory
    mkdir -p ${TMP_DIR} ${PLATFORM} ${TMP_DIR}/build-tools ${TMP_DIR}/compiled ${TMP_DIR}/manifest

    cp -r ${SDK}/platforms/android*/** ${PLATFORM}

    # Unzip build-tools to access aapt2
    unzip -q ${SDK_REPO}/sdk-repo-linux-build-tools.zip -d ${TMP_DIR}/build-tools

    # Compile 9-patch files
    echo \
'<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.android.layoutlib" />' \
> ${TMP_DIR}/manifest/AndroidManifest.xml
    find ${SDK}/platforms/android*/data/res -name "*.9.png" -print0 | xargs -0 ${TMP_DIR}/build-tools/android-*/aapt2 compile -o ${TMP_DIR}/compiled/
    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
    unzip -q ${TMP_DIR}/compiled.apk -d ${TMP_DIR}
    for f in ${TMP_DIR}/res/*; do mv "$f" "${f/-v4/}";done
    cp -RL ${TMP_DIR}/res ${PLATFORM}/data
fi


TEST_JARS="${OUT_INTERMEDIATES}/frameworks/layoutlib/bridge/tests/layoutlib-tests/linux_glibc_common/withres/layoutlib-tests.jar"
GRADLE_RES="-Dtest_res.dir=${SCRIPT_DIR}/res"

# Run layoutlib tests
#DEBUGGER=' -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000 '
DEBUGGER=' '

set -x
${STUDIO_JDK}/bin/java -ea $DEBUGGER \
    -Dnative.lib.path=${NATIVE_LIBRARIES} \
    -Dfont.dir=${FONT_DIR} \
    -Dicu.data.path=${ICU_DATA_PATH} \
    -Dkeyboard.dir=${KEYBOARD_DIR} \
    -Dplatform.dir=${PLATFORM} \
    -Dtest_failure.dir=${OUT_DIR}/${FAILURE_DIR} \
    ${GRADLE_RES} \
    -cp ${TEST_JARS} \
    org.junit.runner.JUnitCore \
    com.android.layoutlib.bridge.intensive.Main
test_exit_code=$?
set +x


# Create zip of all failure screenshots
if [[ -d "${OUT_DIR}/${FAILURE_DIR}" ]]; then
    zip -q -j -r ${OUT_DIR}/${FAILURE_ZIP} ${OUT_DIR}/${FAILURE_DIR}
fi

# Move failure zip to dist directory if specified
if [[ -d "${DIST_DIR}" ]] && [[ -e "${OUT_DIR}/${FAILURE_ZIP}" ]]; then
    mv ${OUT_DIR}/${FAILURE_ZIP} ${DIST_DIR}
fi

# Clean
if [[ $CLEAN_TMP_FILES -eq 1 ]]; then
  rm -rf ${TMP_DIR}
  rm -rf ${OUT_DIR}/${FAILURE_DIR}
fi

exit ${test_exit_code}