[PATCH 05/11] test: new test-lib function to test for equality between files

Subject: [PATCH 05/11] test: new test-lib function to test for equality between files

Date: Wed, 25 May 2011 18:01:14 -0700

To: notmuch@notmuchmail.org

Cc:

From: Jameson Graef Rollins


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.
---
 test/test-lib.sh |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/test/test-lib.sh b/test/test-lib.sh
index f536172..9e2e0b5 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
-- 
1.7.4.4


Thread: