Merge "Enhance run-tests.sh to skip selected executable"
diff --git a/tests/run-tests.sh b/tests/run-tests.sh
index bc931bd..48ba4ef 100755
--- a/tests/run-tests.sh
+++ b/tests/run-tests.sh
@@ -576,24 +576,42 @@
         local PROGRAMS=
         local PROGRAM
         # Do not run the test if BROKEN_RUN is defined
-        if [ -f "$TEST/BROKEN_RUN" -o -f "$TEST/BROKEN_BUILD" ] ; then
-	    if [ -z "$RUN_TESTS" ]; then
-		dump "Skipping NDK device test run: `basename $TEST`"
-		return 0
-	    fi
+        if [ -z "$RUN_TESTS" ]; then
+            if [ -f "$TEST/BROKEN_BUILD" ] ; then
+                dump "Skipping NDK device test not built: $TEST_NAME"
+                return 0
+            fi
+            if [ -f "$TEST/BROKEN_RUN" ] ; then
+                if [ ! -s "$TEST/BROKEN_RUN" ] ; then
+                    # skip all
+                    dump "Skipping NDK device test run: $TEST_NAME"
+                    return 0
+                else
+                    # only skip listed in file
+                    SKIPPED_EXECUTABLES=`cat $TEST/BROKEN_RUN | tr '\n' ' '`
+                    dump "Skipping NDK device test run: $TEST_NAME ($SKIPPED_EXECUTABLES)"
+                fi
+            fi
         fi
         SRCDIR="$BUILD_DIR/`basename $TEST`/libs/$CPU_ABI"
         if [ ! -d "$SRCDIR" ]; then
-            dump "Skipping NDK device test run (no $CPU_ABI binaries): `basename $TEST`"
+            dump "Skipping NDK device test run (no $CPU_ABI binaries): $TEST_NAME"
             return 0
         fi
-        # First, copy all files to the device, except for gdbserver or gdb.setup.
+        # First, copy all files to the device, except for gdbserver, gdb.setup, and
+        # those declared in $TEST/BROKEN_RUN
         adb_shell_mkdir "$DEVICE" $DSTDIR
         for SRCFILE in `ls $SRCDIR`; do
             DSTFILE=`basename $SRCFILE`
             if [ "$DSTFILE" = "gdbserver" -o "$DSTFILE" = "gdb.setup" ] ; then
                 continue
             fi
+            if [ -z "$RUN_TESTS" -a -f "$TEST/BROKEN_RUN" ]; then
+                grep -q -w -e "$DSTFILE" "$TEST/BROKEN_RUN"
+                if [ $? = 0 ] ; then
+                    continue
+                fi
+            fi
             SRCFILE="$SRCDIR/$SRCFILE"
             if [ $HOST_OS = cygwin ]; then
                 SRCFILE=`cygpath -m $SRCFILE`