test: new test-lib function to test for equality between files

We need to be able to test for the presence of a newline at the end of
output.  There's no good way to capture trailing newlines in bash, so
redirecting output to a file is the next best thing.  This new
function should be used when testing for output that is expected to
have trailing newlines.

The next commit will demonstrate the use of this.
This commit is contained in:
Jameson Graef Rollins 2011-05-25 18:01:14 -07:00 committed by Carl Worth
parent d92146d3a6
commit b596fbbcd3

View file

@ -441,6 +441,29 @@ test_expect_equal ()
fi
}
test_expect_equal_file ()
{
exec 1>&6 2>&7 # Restore stdout and stderr
inside_subtest=
test "$#" = 3 && { prereq=$1; shift; } || prereq=
test "$#" = 2 ||
error "bug in the test script: not 2 or 3 parameters to test_expect_equal"
output="$1"
expected="$2"
if ! test_skip "$@"
then
if diff -q "$expected" "$output" >/dev/null ; then
test_ok_ "$test_subtest_name"
else
testname=$this_test.$test_count
mv "$output" $testname.output
mv "$expected" $testname.expected
test_failure_ "$test_subtest_name" "$(diff -u $testname.expected $testname.output)"
fi
fi
}
test_expect_equal_failure ()
{
exec 1>&6 2>&7 # Restore stdout and stderr