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