summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2021-08-04 07:42:32 -0300
committerDavid Bremner <david@tethera.net>2021-08-21 14:55:41 -0700
commit474a7f8e6506ed5c027a5f8e4c11261cda5a17dc (patch)
tree4cc5c0afb551a644f1e904b507b3fccb7bea465f
parent78045301e7dd3caf82d5efc241d10b351be33b28 (diff)
test: add test_expect_equal_file_nonempty
A common bug in tests is that the code used to generate the EXPECTED file fails, generating no output. When the code generating the OUTPUT file fails in the same way, the test passes, even though there is a failure being hidden. Add a new test function that guards against this.
-rw-r--r--test/test-lib.sh20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/test-lib.sh b/test/test-lib.sh
index 6f4bb47f..dc4962f5 100644
--- a/test/test-lib.sh
+++ b/test/test-lib.sh
@@ -434,6 +434,26 @@ test_expect_equal_file () {
test_diff_file_ "$1" "$2"
}
+# Like test_expect_equal, but takes two filenames. Fails if either is empty
+test_expect_equal_file_nonempty () {
+ exec 1>&6 2>&7 # Restore stdout and stderr
+ if [ -z "$inside_subtest" ]; then
+ error "bug in the test script: test_expect_equal_file_nonempty without test_begin_subtest"
+ fi
+ inside_subtest=
+ test "$#" = 2 ||
+ error "bug in the test script: not 2 parameters to test_expect_equal_file_nonempty"
+
+ for file in "$1" "$2"; do
+ if [ ! -s "$file" ]; then
+ test_failure_ "Missing or zero length file: $file"
+ return $?
+ fi
+ done
+
+ test_diff_file_ "$1" "$2"
+}
+
# Like test_expect_equal, but arguments are JSON expressions to be
# canonicalized before diff'ing. If an argument cannot be parsed, it
# is used unchanged so that there's something to diff against.