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

#!/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