summaryrefslogtreecommitdiff
path: root/t/test-lib.sh
diff options
context:
space:
mode:
authorJonathan Nieder <jrnieder@gmail.com>2010-10-31 02:33:50 -0500
committerJunio C Hamano <gitster@pobox.com>2010-11-09 14:47:17 -0800
commitfb3340a6a7a956debcac92cd21cbcaea0928048e (patch)
tree2668194283dd1a8bc51d072c91ee0898f59f4927 /t/test-lib.sh
parent2dec68cf8fec760930c3bc9d13beb17e381d70a3 (diff)
downloadgit-fb3340a6a7a956debcac92cd21cbcaea0928048e.tar.gz
test-lib: introduce test_line_count to measure files
Some tests check their output with code like the following: test "$(git ls-files -u B | wc -l)" -eq 3 || { echo "BAD: should have left stages for B" return 1 } The verbose failure condition is used because test, unlike diff, does not print any useful information about the nature of the failure when it fails. Introduce a test_line_count function to help. If used like git ls-files -u B >output && test_line_count -eq 3 output it will produce output like test_line_count: line count for output !-eq 3 100644 b023018cabc396e7692c70bbf5784a93d3f738ab 2 hi.c 100644 45b983be36b73c0788dc9cbcb76cbb80fc7bb057 3 hi.c on failure. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/test-lib.sh')
-rw-r--r--t/test-lib.sh22
1 files changed, 22 insertions, 0 deletions
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 87308f5a9b..a417bdfed1 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -598,6 +598,28 @@ test_path_is_missing () {
fi
}
+# test_line_count checks that a file has the number of lines it
+# ought to. For example:
+#
+# test_expect_success 'produce exactly one line of output' '
+# do something >output &&
+# test_line_count = 1 output
+# '
+#
+# is like "test $(wc -l <output) = 1" except that it passes the
+# output through when the number of lines is wrong.
+
+test_line_count () {
+ if test $# != 3
+ then
+ error "bug in the test script: not 3 parameters to test_line_count"
+ elif ! test $(wc -l <"$3") "$1" "$2"
+ then
+ echo "test_line_count: line count for $3 !$1 $2"
+ cat "$3"
+ return 1
+ fi
+}
# This is not among top-level (test_expect_success | test_expect_failure)
# but is a prefix that can be used in the test script, like: