Skip to content

Commit a31fcf9

Browse files
committed
Use gradle stdout for CN1 screenshots
1 parent 65c995b commit a31fcf9

File tree

2 files changed

+74
-32
lines changed

2 files changed

+74
-32
lines changed

scripts/android/tests/HelloCodenameOneInstrumentedTest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ public class HelloCodenameOneInstrumentedTest {
4545

4646
private static void println(String s) {
4747
System.out.println(s);
48-
android.util.Log.i("CN1SS", s);
4948
}
5049

5150
private static void settle(long millis) {
@@ -252,13 +251,11 @@ private static void emitScreenshotChannel(byte[] bytes, String testName, String
252251
+ ":"
253252
+ chunk;
254253
System.out.println(line);
255-
android.util.Log.i("CN1SS", line);
256254
count++;
257255
}
258256
println("CN1SS:INFO:test=" + safeName + " chunks=" + count + " total_b64_len=" + b64.length());
259257
String endLine = prefix + ":END:" + safeName;
260258
System.out.println(endLine);
261-
android.util.Log.i("CN1SS", endLine);
262259
System.out.flush();
263260
}
264261

scripts/run-android-instrumentation-tests.sh

Lines changed: 74 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ ENV_FILE="$ENV_DIR/env.sh"
6464
ARTIFACTS_DIR="${ARTIFACTS_DIR:-${GITHUB_WORKSPACE:-$REPO_ROOT}/artifacts}"
6565
ensure_dir "$ARTIFACTS_DIR"
6666
TEST_LOG="$ARTIFACTS_DIR/connectedAndroidTest.log"
67+
GRADLE_STDOUT_LOG="$ARTIFACTS_DIR/connectedAndroidTest.stdout"
6768
SCREENSHOT_REF_DIR="$SCRIPT_DIR/android/screenshots"
6869
SCREENSHOT_TMP_DIR="$(mktemp -d "${TMPDIR}/cn1ss-XXXXXX" 2>/dev/null || echo "${TMPDIR}/cn1ss-tmp")"
6970
ensure_dir "$SCREENSHOT_TMP_DIR"
@@ -144,44 +145,82 @@ fi
144145
ra_log "Running connected Android instrumentation tests"
145146
ORIGINAL_JAVA_HOME="${JAVA_HOME:-}"
146147
export JAVA_HOME="$JAVA17_HOME"
147-
GRADLE_RC=0
148-
if ! (
149-
cd "$GRADLE_PROJECT_DIR" &&
150-
{
151-
if command -v sdkmanager >/dev/null 2>&1; then
152-
yes | sdkmanager --licenses >/dev/null 2>&1 || true
153-
elif [ -x "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" ]; then
154-
yes | "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" --licenses >/dev/null 2>&1 || true
155-
fi
156-
./gradlew --no-daemon connectedDebugAndroidTest
157-
}
158-
); then
159-
GRADLE_RC=$?
160-
fi
148+
: > "$GRADLE_STDOUT_LOG"
149+
set +e
150+
(
151+
cd "$GRADLE_PROJECT_DIR" || exit 1
152+
if command -v sdkmanager >/dev/null 2>&1; then
153+
yes | sdkmanager --licenses >/dev/null 2>&1 || true
154+
elif [ -x "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" ]; then
155+
yes | "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" --licenses >/dev/null 2>&1 || true
156+
fi
157+
./gradlew --no-daemon connectedDebugAndroidTest
158+
) | tee "$GRADLE_STDOUT_LOG"
159+
GRADLE_RC=${PIPESTATUS[0]}
160+
set -e
161161
export JAVA_HOME="$ORIGINAL_JAVA_HOME"
162+
ra_log "Gradle stdout captured at $GRADLE_STDOUT_LOG"
162163

163164
sleep 2
164165

165-
declare -a CN1SS_SOURCES=("LOGCAT:$TEST_LOG")
166+
declare -a CN1SS_SOURCES=()
167+
[ -s "$GRADLE_STDOUT_LOG" ] && CN1SS_SOURCES+=("STDOUT:$GRADLE_STDOUT_LOG")
168+
[ -s "$TEST_LOG" ] && CN1SS_SOURCES+=("LOGCAT:$TEST_LOG")
166169

167170

168171
# ---- Chunk accounting (diagnostics) ---------------------------------------
169172

170-
LOGCAT_CHUNKS="$(cn1ss_count_chunks "$TEST_LOG")"
171-
LOGCAT_CHUNKS="${LOGCAT_CHUNKS//[^0-9]/}"; : "${LOGCAT_CHUNKS:=0}"
173+
if [ ${#CN1SS_SOURCES[@]} -eq 0 ]; then
174+
ra_log "STAGE:MARKERS_NOT_FOUND -> No CN1SS sources were captured"
175+
exit 12
176+
fi
172177

173-
ra_log "Chunk counts -> logcat: ${LOGCAT_CHUNKS}"
178+
TOTAL_CHUNKS=0
179+
PRIMARY_SOURCE_LABEL=""
180+
PRIMARY_SOURCE_PATH=""
181+
for entry in "${CN1SS_SOURCES[@]}"; do
182+
source_type="${entry%%:*}"
183+
source_path="${entry#*:}"
184+
count="$(cn1ss_count_chunks "$source_path" 2>/dev/null || echo 0)"
185+
count="${count//[^0-9]/}"; : "${count:=0}"
186+
label="$(echo "$source_type" | tr '[:upper:]' '[:lower:]')"
187+
ra_log "Chunk counts -> ${label}: ${count}"
188+
if [ -z "$PRIMARY_SOURCE_PATH" ] && [ "$count" -gt 0 ]; then
189+
PRIMARY_SOURCE_PATH="$source_path"
190+
PRIMARY_SOURCE_LABEL="$source_type"
191+
fi
192+
TOTAL_CHUNKS=$((TOTAL_CHUNKS + count))
193+
done
174194

175-
if [ "${LOGCAT_CHUNKS:-0}" = "0" ]; then
195+
if [ "$TOTAL_CHUNKS" -eq 0 ]; then
176196
ra_log "STAGE:MARKERS_NOT_FOUND -> DeviceRunner output did not include CN1SS chunks"
177-
ra_log "---- CN1SS lines from logcat ----"
178-
(grep "CN1SS:" "$TEST_LOG" || true) | sed 's/^/[CN1SS] /'
197+
for entry in "${CN1SS_SOURCES[@]}"; do
198+
source_type="${entry%%:*}"
199+
source_path="${entry#*:}"
200+
if [ -s "$source_path" ]; then
201+
label="$(echo "$source_type" | tr '[:upper:]' '[:lower:]')"
202+
ra_log "---- CN1SS lines from ${label} ----"
203+
(grep "CN1SS:" "$source_path" || true) | sed 's/^/[CN1SS] /'
204+
fi
205+
done
179206
exit 12
180207
fi
181208

182209
# ---- Identify CN1SS test streams -----------------------------------------
183210

184-
TEST_NAMES_RAW="$(cn1ss_list_tests "$TEST_LOG" 2>/dev/null | awk 'NF' | sort -u || true)"
211+
TEST_NAMES_RAW=""
212+
if [ -n "$PRIMARY_SOURCE_PATH" ]; then
213+
TEST_NAMES_RAW="$(cn1ss_list_tests "$PRIMARY_SOURCE_PATH" 2>/dev/null | awk 'NF' | sort -u || true)"
214+
fi
215+
if [ -z "$TEST_NAMES_RAW" ]; then
216+
for entry in "${CN1SS_SOURCES[@]}"; do
217+
source_path="${entry#*:}"
218+
TEST_NAMES_RAW="$(cn1ss_list_tests "$source_path" 2>/dev/null | awk 'NF' | sort -u || true)"
219+
if [ -n "$TEST_NAMES_RAW" ]; then
220+
break
221+
fi
222+
done
223+
fi
185224
declare -a TEST_NAMES=()
186225
if [ -n "$TEST_NAMES_RAW" ]; then
187226
while IFS= read -r name; do
@@ -216,16 +255,22 @@ for test in "${TEST_NAMES[@]}"; do
216255
ra_log "WARN: Failed to extract/decode CN1SS payload for test '$test'; continuing without screenshot"
217256
rm -f "$dest" 2>/dev/null || true
218257
RAW_B64_OUT="$SCREENSHOT_TMP_DIR/${test}.raw.b64"
219-
if cn1ss_extract_base64 "$TEST_LOG" "$test" > "$RAW_B64_OUT" 2>/dev/null; then
220-
if [ -s "$RAW_B64_OUT" ]; then
221-
head -c 64 "$RAW_B64_OUT" | sed 's/^/[CN1SS-B64-HEAD] /'
222-
ra_log "Partial base64 saved at: $RAW_B64_OUT"
258+
rm -f "$RAW_B64_OUT" 2>/dev/null || true
259+
for entry in "${CN1SS_SOURCES[@]}"; do
260+
source_type="${entry%%:*}"
261+
source_path="${entry#*:}"
262+
if cn1ss_extract_base64 "$source_path" "$test" > "$RAW_B64_OUT" 2>/dev/null; then
263+
if [ -s "$RAW_B64_OUT" ]; then
264+
head -c 64 "$RAW_B64_OUT" | sed 's/^/[CN1SS-B64-HEAD] /'
265+
ra_log "Partial base64 saved (${source_type}) at: $RAW_B64_OUT"
266+
else
267+
rm -f "$RAW_B64_OUT" 2>/dev/null || true
268+
fi
269+
break
223270
else
224271
rm -f "$RAW_B64_OUT" 2>/dev/null || true
225272
fi
226-
else
227-
rm -f "$RAW_B64_OUT" 2>/dev/null || true
228-
fi
273+
done
229274
TEST_OUTPUTS["$test"]="$dest"
230275
TEST_SOURCES["$test"]="missing"
231276
ra_log " -> Marked '$test' as missing actual screenshot (placeholder path: $dest)"

0 commit comments

Comments
 (0)