You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
2.5 KiB
111 lines
2.5 KiB
#!/bin/bash
|
|
|
|
#
|
|
# Setup.
|
|
#
|
|
|
|
# Copy the toybox tests across.
|
|
if [[ $(adb shell getprop ro.debuggable) == 1 ]]; then
|
|
adb shell su root rm -rf /data/local/tmp/toybox-tests/
|
|
fi
|
|
adb shell rm -rf /data/local/tmp/toybox-tests/
|
|
adb shell mkdir /data/local/tmp/toybox-tests/
|
|
adb push tests/ /data/local/tmp/toybox-tests/
|
|
adb push scripts/runtest.sh /data/local/tmp/toybox-tests/
|
|
|
|
# Make a temporary directory on the device.
|
|
tmp_dir=`adb shell mktemp --directory /data/local/tmp/toybox-tests-tmp.XXXXXXXXXX`
|
|
|
|
if tty -s; then
|
|
green="\033[1;32m"
|
|
red="\033[1;31m"
|
|
plain="\033[0m"
|
|
else
|
|
green=""
|
|
red=""
|
|
plain=""
|
|
fi
|
|
|
|
# Force pty allocation (http://b/142798587).
|
|
dash_t="-tt"
|
|
|
|
test_toy() {
|
|
toy=$1
|
|
|
|
echo
|
|
|
|
location=$(adb shell "which $toy")
|
|
if [ -z "$location" ]; then
|
|
echo "-- $toy not present"
|
|
return
|
|
fi
|
|
|
|
echo "-- $toy"
|
|
|
|
implementation=$(adb shell "realpath $location")
|
|
non_toy=false
|
|
if [ "$implementation" != "/system/bin/toybox" ]; then
|
|
echo "-- note: $toy is non-toybox implementation"
|
|
non_toy=true
|
|
fi
|
|
|
|
adb shell $dash_t "\
|
|
export C=\"\$(which $toy)\"; \
|
|
export CMDNAME=$toy; \
|
|
export FILES=/data/local/tmp/toybox-tests/tests/files/ ; \
|
|
export LANG=en_US.UTF-8; \
|
|
export VERBOSE=1 ; \
|
|
mkdir $tmp_dir/$toy && cd $tmp_dir/$toy ; \
|
|
source /data/local/tmp/toybox-tests/runtest.sh ; \
|
|
source /data/local/tmp/toybox-tests/tests/$toy.test ; \
|
|
if [ "\$FAILCOUNT" -ne 0 ]; then exit 1; fi; \
|
|
cd .. && rm -rf $toy"
|
|
if [ $? -eq 0 ]; then
|
|
pass_count=$(($pass_count+1))
|
|
elif [ "$non_toy" = "true" ]; then
|
|
non_toy_failures="$non_toy_failures $toy"
|
|
else
|
|
failures="$failures $toy"
|
|
fi
|
|
}
|
|
|
|
#
|
|
# Run the selected test or all tests.
|
|
#
|
|
|
|
failures=""
|
|
pass_count=0
|
|
if [ "$#" -eq 0 ]; then
|
|
# Run all the tests.
|
|
for t in tests/*.test; do
|
|
toy=`echo $t | sed 's|tests/||' | sed 's|\.test||'`
|
|
test_toy $toy
|
|
done
|
|
else
|
|
# Just run the tests for the given toys.
|
|
for toy in "$@"; do
|
|
test_toy $toy
|
|
done
|
|
fi
|
|
|
|
#
|
|
# Show a summary and return a meaningful exit status.
|
|
#
|
|
|
|
echo
|
|
echo "_________________________________________________________________________"
|
|
echo
|
|
echo -e "${green}PASSED${plain}: $pass_count"
|
|
for failure in $failures; do
|
|
echo -e "${red}FAILED${plain}: $failure"
|
|
done
|
|
for failure in $non_toy_failures; do
|
|
echo -e "${red}FAILED${plain}: $failure (ignoring)"
|
|
done
|
|
|
|
# We should have run *something*...
|
|
if [ $pass_count -eq 0 ]; then exit 1; fi
|
|
# And all failures are bad...
|
|
if [ -n "$failures" ]; then exit 1; fi
|
|
exit 0
|