#!/bin/bash -u # # This script is one of the required scripts that get passed to # binary_search_state.py. It's job is to test the executable that # was generated by mixing/matching good & bad object files, and determine # whether the resulting binary is good or bad. # # In this particular case, the generated binary is 'bin-trees'. This # script runs the binary, captures its output, and compares the output # to a file containg the correct (good) output, and three files containing # what the bad output might look like, depending on if one of the two # possile bad .o files was used, or if both bad .o files were used. # # If the output matches the known good output, this returns 0. # If the output matches any known bad output, this returns 1. # If the output does not match the good or bad outputs, this returns 125. # source full_bisect_test/common.sh full_bisect_test/bin-trees > full_bisect_test/temp_output.txt diff full_bisect_test/temp_output.txt full_bisect_test/good-output.txt &> /dev/null retval=$? if [[ ${retval} -eq 0 ]]; then rm -f full_bisect_test/temp_output.txt exit 0 fi diff full_bisect_test/temp_output.txt full_bisect_test/bad-output-1.txt &> /dev/null retval=$? if [[ ${retval} -eq 0 ]]; then rm -f full_bisect_test/temp_output.txt exit 1 else diff full_bisect_test/temp_output.txt full_bisect_test/bad-output-2.txt &> /dev/null retval=$? if [[ ${retval} -eq 0 ]]; then rm -f full_bisect_test/temp_output.txt exit 1 else diff full_bisect_test/temp_output.txt full_bisect_test/bad-output-3.txt &> /dev/null retval=$? if [[ ${retval} -eq 0 ]]; then rm -f full_bisect_test/temp_output.txt exit 1 fi fi fi rm -f full_bisect_test/temp_output.txt exit 125