-
Notifications
You must be signed in to change notification settings - Fork 120
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Add android CI scripts * Android Test Driver: Busybox compatibility
- Loading branch information
Showing
3 changed files
with
197 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
#!/bin/sh | ||
|
||
# This script is run on the emulator to run the tests | ||
|
||
# Get list of all binaries in pwd for later iteration (only include binaries) | ||
BINARIES=$(find . -maxdepth 1 -type f ! -name "*.so" ! -name "android_test_driver.sh") | ||
|
||
TOTAL=0 | ||
PASS=0 | ||
SKIP=0 | ||
FAIL=0 | ||
|
||
# Run each binary, measure time and return value (PASS or FAIL). Print stdout and stderr only after a failure | ||
for BINARY in $BINARIES; do | ||
TOTAL=$((TOTAL + 1)) | ||
|
||
START_TIME=$(date +%s) | ||
START_TIME_MS=$((START_TIME * 1000 + $(date +%N) / 1000000)) | ||
|
||
OUTPUT=$("$BINARY" 2>&1) | ||
EXIT_CODE=$? | ||
|
||
END_TIME=$(date +%s) | ||
END_TIME_MS=$((END_TIME * 1000 + $(date +%N) / 1000000)) | ||
ELAPSED_TIME=$((END_TIME_MS - START_TIME_MS)) | ||
|
||
BINARY_NAME=$(basename "$BINARY") | ||
|
||
if [ $EXIT_CODE -eq 0 ]; then | ||
PASS=$((PASS + 1)) | ||
echo "PASSED ($EXIT_CODE): $BINARY_NAME (${ELAPSED_TIME}ms)" | ||
elif [ $EXIT_CODE -eq 77 ]; then | ||
SKIP=$((SKIP + 1)) | ||
echo "SKIPPED: $BINARY_NAME" | ||
else | ||
FAIL=$((FAIL + 1)) | ||
echo "FAILED ($EXIT_CODE): $BINARY_NAME (${ELAPSED_TIME}ms)" | ||
if [ -z "$OUTPUT" ]; then | ||
echo "No output written to stdout." | ||
else | ||
echo "Output:" | ||
echo "$OUTPUT" | ||
fi | ||
fi | ||
done | ||
|
||
if [ $TOTAL -eq 0 ]; then | ||
echo "No tests found. Exiting." | ||
exit 1 | ||
fi | ||
|
||
PERCENTAGE=$(((PASS + SKIP) * 100 / TOTAL)) | ||
echo "$PERCENTAGE% Passed. Total: $TOTAL, Passed: $PASS, Skipped: $SKIP, Failed: $FAIL" | ||
echo "Finished running tests. Exiting." | ||
|
||
# Exit with corresponding return value | ||
if [ $FAIL -eq 0 ]; then | ||
exit 0 | ||
else | ||
exit 1 | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
#!/bin/sh | ||
|
||
main () { | ||
# first argument is the build directory | ||
local BUILD_DIR=$1 | ||
# second argument is the android ndk sysroot | ||
local ANDROID_NDK_SYSROOT=$2 | ||
# third argument is the target triple | ||
# e.g. arm-linux-androideabi, aarch64-linux-android, x86_64-linux-android | ||
local TARGET_TRIPLE=$3 | ||
|
||
if [ ! -d "$BUILD_DIR" ] | ||
then | ||
echo "Build directory argument not found" | ||
exit 1 | ||
fi | ||
if [ ! -d "$ANDROID_NDK_SYSROOT" ] | ||
then | ||
echo "Android NDK sysroot argument not found" | ||
exit 1 | ||
fi | ||
if [ -z "$TARGET_TRIPLE" ] | ||
then | ||
echo "Target triple argument not found" | ||
exit 1 | ||
fi | ||
|
||
# We need to run the emulator with root permissions | ||
# This is needed to run the tests | ||
adb root | ||
|
||
local TEMP_DIR=$(mktemp -d) | ||
|
||
# Copy libobjc.so and test binaries to temporary directory | ||
cp $BUILD_DIR/libobjc.so* $TEMP_DIR | ||
cp $BUILD_DIR/Test/* $TEMP_DIR | ||
|
||
for file in $TEMP_DIR/*; do | ||
# Check if file is a binary | ||
if ! file $file | grep -q "ELF" | ||
then | ||
rm $file | ||
continue | ||
fi | ||
|
||
# Set runtime path to ORIGIN | ||
patchelf --set-rpath '$ORIGIN' $file | ||
done | ||
|
||
# Copy libc++_shared.so (required by libobjc2) | ||
cp $ANDROID_NDK_SYSROOT/usr/lib/$TARGET_TRIPLE/libc++_shared.so $TEMP_DIR | ||
|
||
adb shell rm -rf /data/local/tmp/libobjc2_tests | ||
adb push $TEMP_DIR /data/local/tmp/libobjc2_tests | ||
|
||
# Copy android_test_driver.sh to device | ||
adb push $BUILD_DIR/../.github/scripts/android_test_driver.sh /data/local/tmp/libobjc2_tests | ||
|
||
# Run the tests | ||
adb shell "cd /data/local/tmp/libobjc2_tests && sh android_test_driver.sh" | ||
} | ||
|
||
main "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters