git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Đoàn Trần Công Danh" <congdanhqx@gmail.com>
To: git@vger.kernel.org
Cc: "Đoàn Trần Công Danh" <congdanhqx@gmail.com>,
	"Eric Sunshine" <sunshine@sunshineco.com>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
	"Junio C Hamano" <gitster@pobox.com>,
	"Bagas Sanjaya" <bagasdotme@gmail.com>,
	"Phillip Wood" <phillip.wood123@gmail.com>,
	"Felipe Contreras" <felipe.contreras@gmail.com>
Subject: [PATCH v5 1/3] test-lib-functions: introduce test_stdout_line_count
Date: Sun,  4 Jul 2021 12:46:10 +0700	[thread overview]
Message-ID: <ab542ae9aa35decd2bc55561c5ba8f5653fa07a2.1625362489.git.congdanhqx@gmail.com> (raw)
In-Reply-To: <cover.1625362488.git.congdanhqx@gmail.com>

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 <congdanhqx@gmail.com>
---
 t/test-lib-functions.sh | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index f0448daa74..f9505be8fe 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -845,6 +845,32 @@ test_line_count () {
 	fi
 }
 
+# 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 () {
 	test "$#" -ne 1 && BUG "1 param"
 	test-tool path-utils file-size "$1"
-- 
2.32.0.278.gd42b80f139


  reply	other threads:[~2021-07-04  5:46 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-15 17:20 [PATCH v2 0/5] t: new helper test_line_count_cmd Đoàn Trần Công Danh
2021-06-15 17:20 ` [PATCH v2 1/5] test-lib-functions: introduce test_line_count_cmd Đoàn Trần Công Danh
2021-06-17  4:51   ` Felipe Contreras
2021-06-15 17:20 ` [PATCH v2 2/5] t6402: use find(1) builtin to filter instead of grep Đoàn Trần Công Danh
2021-06-15 17:20 ` [PATCH v2 3/5] t0041: use test_line_count_cmd to check std{out,err} Đoàn Trần Công Danh
2021-06-16  3:06   ` Junio C Hamano
2021-06-16 14:21     ` Đoàn Trần Công Danh
2021-06-17  0:18       ` Junio C Hamano
2021-06-15 17:20 ` [PATCH v2 4/5] t6400: use test_line_count_cmd to count # of lines in stdout Đoàn Trần Công Danh
2021-06-15 17:20 ` [PATCH v2 5/5] t6402: " Đoàn Trần Công Danh
2021-06-19  1:30 ` [PATCH v3 0/4] t: new helper test_line_count_cmd Đoàn Trần Công Danh
2021-06-19  5:50   ` Eric Sunshine
2021-06-19  6:17     ` Junio C Hamano
2021-06-19  6:26       ` Eric Sunshine
2021-06-19  6:50         ` Junio C Hamano
2021-06-21 23:52           ` Đoàn Trần Công Danh
2021-06-22  0:43             ` Eric Sunshine
2021-06-19  1:30 ` [PATCH v3 1/4] test-lib-functions: introduce test_line_count_cmd Đoàn Trần Công Danh
2021-06-21  9:08   ` Andrei Rybak
2021-06-24 19:23     ` Andrei Rybak
2021-06-19  1:30 ` [PATCH v3 2/4] t6402: use find(1) builtin to filter instead of grep Đoàn Trần Công Danh
2021-06-21  8:17   ` Andrei Rybak
2021-06-21 23:54     ` Đoàn Trần Công Danh
2021-06-19  1:30 ` [PATCH v3 3/4] t6400: use test_line_count_cmd to count # of lines in stdout Đoàn Trần Công Danh
2021-06-19  1:30 ` [PATCH v3 4/4] t6402: " Đoàn Trần Công Danh
2021-06-29 13:57 ` [PATCH v4 0/2] t640{0,2}: preserve ls-files exit status code Đoàn Trần Công Danh
2021-06-29 13:57   ` [PATCH v4 1/2] t6400: preserve git " Đoàn Trần Công Danh
2021-06-29 14:11     ` Eric Sunshine
2021-06-29 22:49       ` Junio C Hamano
2021-06-30  1:57         ` Eric Sunshine
2021-06-30  3:36           ` Junio C Hamano
2021-06-30 11:01             ` Đoàn Trần Công Danh
2021-06-30 20:44               ` Junio C Hamano
2021-06-29 13:57   ` [PATCH v4 2/2] t6402: preserve git " Đoàn Trần Công Danh
2021-06-29 20:49   ` [PATCH v4 0/2] t640{0,2}: preserve ls-files " Junio C Hamano
2021-07-04  5:46 ` [PATCH v5 0/3] new test-libs-function: test_stdout_line_count Đoàn Trần Công Danh
2021-07-04  5:46   ` Đoàn Trần Công Danh [this message]
2021-07-04  5:56     ` [PATCH v5 1/3] test-lib-functions: introduce test_stdout_line_count Eric Sunshine
2021-07-06 19:24       ` Junio C Hamano
2021-07-07  3:03         ` Đoàn Trần Công Danh
2021-07-04  5:46   ` [PATCH v5 2/3] t6400: preserve git ls-files exit status code Đoàn Trần Công Danh
2021-07-04  5:46   ` [PATCH v5 3/3] t6402: preserve git " Đoàn Trần Công Danh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ab542ae9aa35decd2bc55561c5ba8f5653fa07a2.1625362489.git.congdanhqx@gmail.com \
    --to=congdanhqx@gmail.com \
    --cc=avarab@gmail.com \
    --cc=bagasdotme@gmail.com \
    --cc=felipe.contreras@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=phillip.wood123@gmail.com \
    --cc=sunshine@sunshineco.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).