105 lines
3.0 KiB
Bash
Executable File
105 lines
3.0 KiB
Bash
Executable File
#!/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
|
|
|