aboutsummaryrefslogtreecommitdiff
path: root/binary_search_tool/full_bisect_test/main-bisect-test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'binary_search_tool/full_bisect_test/main-bisect-test.sh')
-rwxr-xr-xbinary_search_tool/full_bisect_test/main-bisect-test.sh104
1 files changed, 104 insertions, 0 deletions
diff --git a/binary_search_tool/full_bisect_test/main-bisect-test.sh b/binary_search_tool/full_bisect_test/main-bisect-test.sh
new file mode 100755
index 00000000..af01c19c
--- /dev/null
+++ b/binary_search_tool/full_bisect_test/main-bisect-test.sh
@@ -0,0 +1,104 @@
+#!/bin/bash
+#
+# This script is the heart of the bisection test. It assumes the good-objects
+# and bad-objects directories have been created and populated. It runs three
+# bisection tests:
+# Test 1. use --file_args, and no pruning, which passes the object file list
+# in a file, and stops as soon as it finds the first bad file.
+# Test 2. do not use --file_args, and no pruning. The object files are passed
+# directly on the command line; stop as soon as it finds the first
+# bad file.
+# Test 3. use --file_args and --prune. Pass the object file list in a file
+# and run until it finds ALL the bad files (there are two of them).
+#
+
+SAVE_DIR=`pwd`
+
+DIR=full_bisect_test
+
+# Make sure you are running this script from the parent directory.
+if [[ ! -f "${DIR}/setup.sh" ]] ; then
+ echo "Cannot find ${DIR}/setup.sh. You are running this from the wrong directory."
+ echo "You need to run this from toolchain-utils/binary_search_tool ."
+ exit 1
+fi
+
+# Run Test 1.
+${DIR}/setup.sh
+
+./binary_search_state.py --get_initial_items="${DIR}/get_initial_items.sh" \
+ --switch_to_good="${DIR}/switch_to_good.sh" \
+ --switch_to_bad="${DIR}/switch_to_bad.sh" \
+ --test_setup_script="${DIR}/test_setup.sh" \
+ --test_script="${DIR}/interactive_test.sh" \
+ --file_args &> /tmp/full_bisect_test.log
+
+${DIR}/cleanup.sh
+
+grep "Search complete. First bad version: " /tmp/full_bisect_test.log &> /dev/null
+test_status=$?
+
+if [[ ${test_status} -ne 0 ]] ; then
+ echo "Test 1 FAILED. See /tmp/full_bisect_test.log for details."
+ exit 1
+else
+ echo "Test 1 passed."
+fi
+
+cd ${SAVE_DIR}
+
+# Run Test 2.
+${DIR}/setup.sh
+
+./binary_search_state.py --get_initial_items="${DIR}/get_initial_items.sh" \
+ --switch_to_good="${DIR}/switch_to_good.sh" \
+ --switch_to_bad="${DIR}/switch_to_bad.sh" \
+ --test_setup_script="${DIR}/test_setup.sh" \
+ --test_script="${DIR}/interactive_test.sh" \
+ &> /tmp/full_bisect_test.log
+
+${DIR}/cleanup.sh
+
+grep "Search complete. First bad version: " /tmp/full_bisect_test.log &> /dev/null
+test_status=$?
+
+if [[ ${test_status} -ne 0 ]] ; then
+ echo "Test 2 FAILED. See /tmp/full_bisect_test.log for details."
+ exit 1
+else
+ echo "Test 2 passed."
+fi
+
+cd ${SAVE_DIR}
+
+# Run Test 3.
+${DIR}/setup.sh
+
+./binary_search_state.py --get_initial_items="${DIR}/get_initial_items.sh" \
+ --switch_to_good="${DIR}/switch_to_good.sh" \
+ --switch_to_bad="${DIR}/switch_to_bad.sh" \
+ --test_setup_script="${DIR}/test_setup.sh" \
+ --test_script="${DIR}/interactive_test.sh" \
+ --file_args --prune &> /tmp/full_bisect_test.log
+
+${DIR}/cleanup.sh
+
+grep "Bad items are: " /tmp/full_bisect_test.log | grep inorder_norecurse.o &> /dev/null
+test_status_1=$?
+
+grep "Bad items are: " /tmp/full_bisect_test.log | grep preorder_norecurse.o &> /dev/null
+test_status_2=$?
+
+if [[ ${test_status_1} -ne 0 ]] ; then
+ echo "Test 3 FAILED. See /tmp/full_bisect_test.log for details."
+ exit 1
+elif [[ ${test_status_2} -ne 0 ]] ; then
+ echo "Test 3 FAILED. See /tmp/full_bisect_test.log for details."
+ exit 1
+else
+ echo "Test 3 passed."
+fi
+
+# All tests passed!
+exit 0
+