You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.7 KiB
Bash
64 lines
1.7 KiB
Bash
#!/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)
|
|
# Busybox date does not support %N, so we can't get milliseconds this way
|
|
#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))
|
|
ELAPSED_TIME=$((END_TIME - START_TIME))
|
|
|
|
BINARY_NAME=$(basename "$BINARY")
|
|
|
|
if [ $EXIT_CODE -eq 0 ]; then
|
|
PASS=$((PASS + 1))
|
|
echo "PASSED ($EXIT_CODE): $BINARY_NAME (${ELAPSED_TIME}s)"
|
|
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}s)"
|
|
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
|