Thread (29 messages) 29 messages, 5 authors, 2021-07-04

Re: [PATCH v5 1/3] test-lib-functions: introduce test_stdout_line_count

From: Eric Sunshine <hidden>
Date: 2021-07-04 05:57:59

On Sun, Jul 4, 2021 at 1:46 AM Đoàn Trần Công Danh [off-list ref] wrote:
quoted hunk ↗ jump to hunk
In some tests, we're checking the number of lines in output of some
commands, including but not limited to Git's command.

We're doing the check by running those commands in the left side of
a pipe, thus losing the exit status code of those commands. Meanwhile,
we really want to check the exit status code of Git's command.

Let's write the output of those commands to a temporary file, and use
test_line_count separately in order to check exit status code of
those commands properly.

Signed-off-by: Đoàn Trần Công Danh <redacted>
---
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
@@ -845,6 +845,32 @@ test_line_count () {
+# SYNOPSIS:
+#      test_stdout_line_count <bin-ops> <value> <cmd> [<args>...]
+#
+# test_stdout_line_count checks that the output of a command has the number
+# of lines it ought to. For example:
+#
+# test_stdout_line_count = 3 git ls-files -u
+# test_stdout_line_count -gt 10 ls
+test_stdout_line_count () {
+       local ops val trashdir &&
+       if test "$#" -le 3
+       then
+               BUG "expect 3 or more arguments"
+       fi &&
+       ops="$1" &&
+       val="$2" &&
+       shift 2 &&
+       if ! trashdir="$(git rev-parse --git-dir)/trash"; then
+               BUG "expect to be run inside a worktree"
+       fi &&
+       mkdir -p "$trashdir" &&
+       "$@" >"$trashdir/output" &&
+       test_line_count "$ops" "$val" "$trashdir/output"
+}
+
+
 test_file_size () {
Nit: one too many blank lines after the test body.

A minor think-out-loud: I wonder if there would be value in deriving
the name of the output file from the command being run (perhaps by
using `tr` to translate oddball characters to underscore or to fold
them out). This might or might not help someone debugging a test
failure since there would be less chance of "$trashdir/output" being
repeatedly clobbered. Anyhow, it's something that could be done later
if deemed useful, not something for the present series. (I'm not
interested in seeing this series re-rolled endlessly.)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help