aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Jameson Graef Rollins <jrollins@finestructure.net>2011-05-25 18:01:14 -0700
committerGravatar Carl Worth <cworth@cworth.org>2011-05-27 16:18:57 -0700
commitb596fbbcd30c82a6487231f01ba1e4d68bd98275 (patch)
tree9d97540362ebf16c083c3be5b27cc0291146fe98 /test
parentd92146d3a6809f8ad940302af49cd99a0820665e (diff)
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.
Diffstat (limited to 'test')
-rwxr-xr-xtest/test-lib.sh23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/test-lib.sh b/test/test-lib.sh
index 7fed29cc..dc2972f2 100755
--- a/test/test-lib.sh
+++ b/test/test-lib.sh
@@ -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