Skip to content

Commit c2409f7

Browse files
committed
Harden instrumentation helper parsing
1 parent 2bd7f95 commit c2409f7

File tree

1 file changed

+31
-5
lines changed

1 file changed

+31
-5
lines changed

scripts/run-android-instrumentation-tests.sh

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,16 @@ ra_log "Installed instrumentation targets:"
9595
adb_target shell pm list instrumentation || true
9696

9797
if [ -z "$PACKAGE_NAME" ]; then
98-
PACKAGE_NAME="$(adb_target shell pm list instrumentation 2>/dev/null | sed -n 's/.*target=\([^)]*\)).*/\1/p' | tr -d '\r' | head -n 1 || true)"
98+
PACKAGE_NAME="$(
99+
adb_target shell pm list instrumentation 2>/dev/null \
100+
| tr -d '\r' \
101+
| awk '
102+
match($0,/target=\([^)]*\)/){
103+
s=substr($0,RSTART+7,RLENGTH-8);
104+
print s; exit
105+
}'
106+
|| true
107+
)"
99108
if [ -n "$PACKAGE_NAME" ]; then
100109
ra_log "Detected application package from instrumentation list: $PACKAGE_NAME"
101110
fi
@@ -133,14 +142,26 @@ else
133142
MAIN_ACTIVITY="$(printf '%s\n' "$RESOLVE_OUTPUT" | awk 'NF && $1 ~ /\// {print $1; exit}')"
134143
if [ -z "$MAIN_ACTIVITY" ]; then
135144
RESOLVE_OUTPUT="$(adb_target shell cmd package resolve-activity -a android.intent.action.MAIN -c android.intent.category.LAUNCHER "$PACKAGE_NAME" 2>/dev/null | tr -d '\r')"
136-
MAIN_ACTIVITY="$(printf '%s\n' "$RESOLVE_OUTPUT" | sed -n 's/.*name=\([^ ]*\).*/\1/p' | head -n 1)"
145+
MAIN_ACTIVITY="$(
146+
printf '%s\n' "$RESOLVE_OUTPUT" \
147+
| awk '
148+
match($0,/name=([^ ]+)/){
149+
print substr($0,RSTART+5,RLENGTH-5); exit
150+
}'
151+
)"
137152
fi
138153
if [ -n "$MAIN_ACTIVITY" ] && [[ "$MAIN_ACTIVITY" != */* ]]; then
139154
MAIN_ACTIVITY="$PACKAGE_NAME/$MAIN_ACTIVITY"
140155
fi
141156
if [[ -z "$MAIN_ACTIVITY" || "$MAIN_ACTIVITY" != */* ]]; then
142157
RESOLVE_OUTPUT="$(adb_target shell dumpsys package "$PACKAGE_NAME" 2>/dev/null | tr -d '\r')"
143-
MAIN_ACTIVITY="$(printf '%s\n' "$RESOLVE_OUTPUT" | sed -n 's/.*cmp=\([^ ]*\).*/\1/p' | head -n 1)"
158+
MAIN_ACTIVITY="$(
159+
printf '%s\n' "$RESOLVE_OUTPUT" \
160+
| awk '
161+
match($0,/cmp=([^ ]+)/){
162+
print substr($0,RSTART+4,RLENGTH-4); exit
163+
}'
164+
)"
144165
fi
145166
if [[ -z "$MAIN_ACTIVITY" || "$MAIN_ACTIVITY" != */* ]]; then
146167
OUTPUT_SNIPPET="$(printf '%s\n' "$RESOLVE_OUTPUT" | head -n 5)"
@@ -155,9 +176,14 @@ else
155176
fi
156177
fi
157178

158-
sleep 5
179+
adb_target shell <<EOF || true
180+
while [[ "\$(dumpsys window windows | grep mFocussedApp | grep -c '$PACKAGE_NAME')" -eq 0 ]]; do
181+
sleep 0.5
182+
done
183+
EOF
184+
sleep 1
159185

160-
SCREENSHOT_DEVICE_PATH="/sdcard/Download/cn1-instrumentation-screenshot.png"
186+
SCREENSHOT_DEVICE_PATH="/sdcard/cn1-instrumentation-screenshot.png"
161187
SCREENSHOT_DIR="$REPO_ROOT/out/android-emulator"
162188
SCREENSHOT_PATH="$SCREENSHOT_DIR/hello-codenameone.png"
163189
mkdir -p "$SCREENSHOT_DIR"

0 commit comments

Comments
 (0)