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 v3 0/4] t: new helper test_line_count_cmd
Date: Sat, 19 Jun 2021 08:30:31 +0700 [thread overview]
Message-ID: <20210619013035.26313-1-congdanhqx@gmail.com> (raw)
In-Reply-To: <20210615172038.28917-1-congdanhqx@gmail.com>
This is a series to clear false positive when applying Junio's suggestion to
to a series written by Ævar [1].
Change in v3 since v2:
* --err was dropped entirely
* --out is not an option anymore, <binops> and <value> is the first two
arguments that fed into test_line_count_cmd
Change in v2 since v1:
* Documentation for test_line_count_cmd has been written in more detail
with examples
* The outfile and errfile will be created only if --out and/or --err was
specified for better "-v"
* outfile and errfile will be created in $TRASH_DIRECTORY/.git/trash
iff $TRASH_DIRECTORY/.git is a directory, otherwise $TRASH_DIRECTORY,
avoid "git rev-parse --git-dir" because we may want to test it, too.
* Use test_when_finished to clean those files instead of manual "rm -f",
also for better "-v"
* Merge multiple instance of "$@" run into one, for better auditing
* t0041 is also converted to use new helper
* With the change to location of outfile and errfile,
output of "git ls-files -o" has been restored.
* Fix double space before "&&" in the end of test command.
1: https://lore.kernel.org/git/87r1j42ffz.fsf@evledraar.gmail.com/
Đoàn Trần Công Danh (4):
test-lib-functions: introduce test_line_count_cmd
t6402: use find(1) builtin to filter instead of grep
t6400: use test_line_count_cmd to count # of lines in stdout
t6402: use test_line_count_cmd to count # of lines in stdout
t/t6400-merge-df.sh | 16 ++---
t/t6402-merge-rename.sh | 132 +++++++++++++++++++---------------------
t/test-lib-functions.sh | 80 ++++++++++++++++++++++++
3 files changed, 150 insertions(+), 78 deletions(-)
Range-diff against v2:
1: a823312b19 < -: ---------- test-lib-functions: introduce test_line_count_cmd
-: ---------- > 1: 255ba9b067 test-lib-functions: introduce test_line_count_cmd
2: 6e8f2d4289 = 2: 38cd3f93a0 t6402: use find(1) builtin to filter instead of grep
3: 33daa5ee2f < -: ---------- t0041: use test_line_count_cmd to check std{out,err}
4: 729ebb8f50 ! 3: efb0905dd3 t6400: use test_line_count_cmd to count # of lines in stdout
@@ t/t6400-merge-df.sh: test_expect_success 'modify/delete + directory/file conflic
- test 5 -eq $(git ls-files -s | wc -l) &&
- test 4 -eq $(git ls-files -u | wc -l) &&
-+ test_line_count_cmd --out = 5 git ls-files -s &&
-+ test_line_count_cmd --out = 4 git ls-files -u &&
++ test_line_count_cmd = 5 git ls-files -s &&
++ test_line_count_cmd = 4 git ls-files -u &&
if test "$GIT_TEST_MERGE_ALGORITHM" = ort
then
- test 0 -eq $(git ls-files -o | wc -l)
-+ test_line_count_cmd --out = 0 git ls-files -o
++ test_line_count_cmd = 0 git ls-files -o
else
- test 1 -eq $(git ls-files -o | wc -l)
-+ test_line_count_cmd --out = 1 git ls-files -o
++ test_line_count_cmd = 1 git ls-files -o
fi &&
test_path_is_file letters/file &&
@@ t/t6400-merge-df.sh: test_expect_success 'modify/delete + directory/file conflic
- test 5 -eq $(git ls-files -s | wc -l) &&
- test 4 -eq $(git ls-files -u | wc -l) &&
-+ test_line_count_cmd --out = 5 git ls-files -s &&
-+ test_line_count_cmd --out = 4 git ls-files -u &&
++ test_line_count_cmd = 5 git ls-files -s &&
++ test_line_count_cmd = 4 git ls-files -u &&
if test "$GIT_TEST_MERGE_ALGORITHM" = ort
then
- test 0 -eq $(git ls-files -o | wc -l)
-+ test_line_count_cmd --out = 0 git ls-files -o
++ test_line_count_cmd = 0 git ls-files -o
else
- test 1 -eq $(git ls-files -o | wc -l)
-+ test_line_count_cmd --out = 1 git ls-files -o
++ test_line_count_cmd = 1 git ls-files -o
fi &&
test_path_is_file letters/file &&
5: 1b450e4148 ! 4: 8fc0f3ffd2 t6402: use test_line_count_cmd to count # of lines in stdout
@@ t/t6402-merge-rename.sh: test_expect_success 'pull renaming branch into unrenami
- test_line_count = 3 b.stages &&
- git ls-files -s N >n.stages &&
- test_line_count = 1 n.stages &&
-+ test_line_count_cmd --out = 3 git ls-files -u B &&
-+ test_line_count_cmd --out = 1 git ls-files -s N &&
++ test_line_count_cmd = 3 git ls-files -u B &&
++ test_line_count_cmd = 1 git ls-files -s N &&
sed -ne "/^g/{
p
q
@@ t/t6402-merge-rename.sh: test_expect_success 'pull renaming branch into another
- test_line_count = 3 b.stages &&
- git ls-files -s N >n.stages &&
- test_line_count = 1 n.stages &&
-+ test_line_count_cmd --out = 3 git ls-files -u B &&
-+ test_line_count_cmd --out = 1 git ls-files -s N &&
++ test_line_count_cmd = 3 git ls-files -u B &&
++ test_line_count_cmd = 1 git ls-files -s N &&
sed -ne "/^g/{
p
q
@@ t/t6402-merge-rename.sh: test_expect_success 'pull unrenaming branch into renami
- test_line_count = 3 b.stages &&
- git ls-files -s N >n.stages &&
- test_line_count = 1 n.stages &&
-+ test_line_count_cmd --out = 3 git ls-files -u B &&
-+ test_line_count_cmd --out = 1 git ls-files -s N &&
++ test_line_count_cmd = 3 git ls-files -u B &&
++ test_line_count_cmd = 1 git ls-files -s N &&
sed -ne "/^g/{
p
q
@@ t/t6402-merge-rename.sh: test_expect_success 'pull conflicting renames' \
- test_line_count = 1 c.stages &&
- git ls-files -s N >n.stages &&
- test_line_count = 1 n.stages &&
-+ test_line_count_cmd --out = 1 git ls-files -u A &&
-+ test_line_count_cmd --out = 1 git ls-files -u B &&
-+ test_line_count_cmd --out = 1 git ls-files -u C &&
-+ test_line_count_cmd --out = 1 git ls-files -s N &&
++ test_line_count_cmd = 1 git ls-files -u A &&
++ test_line_count_cmd = 1 git ls-files -u B &&
++ test_line_count_cmd = 1 git ls-files -u C &&
++ test_line_count_cmd = 1 git ls-files -s N &&
sed -ne "/^g/{
p
q
@@ t/t6402-merge-rename.sh: test_expect_success 'Rename+D/F conflict; renamed file
- test 3 -eq "$(git ls-files -u | wc -l)" &&
- test 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
-+ test_line_count_cmd --out = 3 git ls-files -u &&
-+ test_line_count_cmd --out = 2 git ls-files -u dir/file-in-the-way &&
++ test_line_count_cmd = 3 git ls-files -u &&
++ test_line_count_cmd = 2 git ls-files -u dir/file-in-the-way &&
test_must_fail git diff --quiet &&
test_must_fail git diff --cached --quiet &&
@@ t/t6402-merge-rename.sh: test_expect_success 'Same as previous, but merged other
- test 3 -eq "$(git ls-files -u | wc -l)" &&
- test 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
-+ test_line_count_cmd --out = 3 git ls-files -u &&
-+ test_line_count_cmd --out = 2 git ls-files -u dir/file-in-the-way &&
++ test_line_count_cmd = 3 git ls-files -u &&
++ test_line_count_cmd = 2 git ls-files -u dir/file-in-the-way &&
test_must_fail git diff --quiet &&
test_must_fail git diff --cached --quiet &&
@@ t/t6402-merge-rename.sh: test_expect_success 'Rename+D/F conflict; renamed file
- test 3 -eq "$(git ls-files -u | wc -l)" &&
- test 3 -eq "$(git ls-files -u dir | wc -l)" &&
-+ test_line_count_cmd --out = 3 git ls-files -u &&
-+ test_line_count_cmd --out = 3 git ls-files -u dir &&
++ test_line_count_cmd = 3 git ls-files -u &&
++ test_line_count_cmd = 3 git ls-files -u dir &&
test_must_fail git diff --quiet &&
test_must_fail git diff --cached --quiet &&
@@ t/t6402-merge-rename.sh: test_expect_success 'Rename+D/F conflict; renamed file
test_must_fail git merge --strategy=recursive dir-in-way &&
- test 5 -eq "$(git ls-files -u | wc -l)" &&
-+ test_line_count_cmd --out = 5 git ls-files -u &&
++ test_line_count_cmd = 5 git ls-files -u &&
if test "$GIT_TEST_MERGE_ALGORITHM" = ort
then
- test 3 -eq "$(git ls-files -u dir~HEAD | wc -l)"
-+ test_line_count_cmd --out = 3 git ls-files -u dir~HEAD
++ test_line_count_cmd = 3 git ls-files -u dir~HEAD
else
- test 3 -eq "$(git ls-files -u dir | grep -v file-in-the-way | wc -l)"
+ git ls-files -u dir >out &&
-+ test_line_count_cmd --out = 3 grep -v file-in-the-way out
++ test_line_count_cmd = 3 grep -v file-in-the-way out
fi &&
- test 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
-+ test_line_count_cmd --out = 2 git ls-files -u dir/file-in-the-way &&
++ test_line_count_cmd = 2 git ls-files -u dir/file-in-the-way &&
test_must_fail git diff --quiet &&
test_must_fail git diff --cached --quiet &&
@@ t/t6402-merge-rename.sh: test_expect_success 'Same as previous, but merged other
test_must_fail git merge --strategy=recursive renamed-file-has-conflicts &&
- test 5 -eq "$(git ls-files -u | wc -l)" &&
-+ test_line_count_cmd --out = 5 git ls-files -u &&
++ test_line_count_cmd = 5 git ls-files -u &&
if test "$GIT_TEST_MERGE_ALGORITHM" = ort
then
- test 3 -eq "$(git ls-files -u dir~renamed-file-has-conflicts | wc -l)"
-+ test_line_count_cmd --out = 3 git ls-files -u dir~renamed-file-has-conflicts
++ test_line_count_cmd = 3 git ls-files -u dir~renamed-file-has-conflicts
else
- test 3 -eq "$(git ls-files -u dir | grep -v file-in-the-way | wc -l)"
+ git ls-files -u dir >out &&
-+ test_line_count_cmd --out = 3 grep -v file-in-the-way out
++ test_line_count_cmd = 3 grep -v file-in-the-way out
fi &&
- test 2 -eq "$(git ls-files -u dir/file-in-the-way | wc -l)" &&
-+ test_line_count_cmd --out = 2 git ls-files -u dir/file-in-the-way &&
++ test_line_count_cmd = 2 git ls-files -u dir/file-in-the-way &&
test_must_fail git diff --quiet &&
test_must_fail git diff --cached --quiet &&
@@ t/t6402-merge-rename.sh: test_expect_success 'both rename source and destination
if test "$GIT_TEST_MERGE_ALGORITHM" = ort
then
- test 2 -eq "$(git ls-files -u | wc -l)"
-+ test_line_count_cmd --out = 2 git ls-files -u
++ test_line_count_cmd = 2 git ls-files -u
else
- test 1 -eq "$(git ls-files -u | wc -l)"
-+ test_line_count_cmd --out = 1 git ls-files -u
++ test_line_count_cmd = 1 git ls-files -u
fi &&
test_must_fail git diff --quiet &&
@@ t/t6402-merge-rename.sh: then
- test 4 -eq "$(git ls-files -u | wc -l)" &&
- test 2 -eq "$(git ls-files -u one | wc -l)" &&
- test 2 -eq "$(git ls-files -u two | wc -l)" &&
-+ test_line_count_cmd --out = 4 git ls-files -u &&
-+ test_line_count_cmd --out = 2 git ls-files -u one &&
-+ test_line_count_cmd --out = 2 git ls-files -u two &&
++ test_line_count_cmd = 4 git ls-files -u &&
++ test_line_count_cmd = 2 git ls-files -u one &&
++ test_line_count_cmd = 2 git ls-files -u two &&
test_must_fail git diff --quiet &&
@@ t/t6402-merge-rename.sh: else
- test 2 -eq "$(git ls-files -u | wc -l)" &&
- test 1 -eq "$(git ls-files -u one | wc -l)" &&
- test 1 -eq "$(git ls-files -u two | wc -l)" &&
-+ test_line_count_cmd --out = 2 git ls-files -u &&
-+ test_line_count_cmd --out = 1 git ls-files -u one &&
-+ test_line_count_cmd --out = 1 git ls-files -u two &&
++ test_line_count_cmd = 2 git ls-files -u &&
++ test_line_count_cmd = 1 git ls-files -u one &&
++ test_line_count_cmd = 1 git ls-files -u two &&
test_must_fail git diff --quiet &&
@@ t/t6402-merge-rename.sh: test_expect_success 'pair rename to parent of other (D/
- test 4 -eq "$(git ls-files -u | wc -l)" &&
- test 2 -eq "$(git ls-files -u one | wc -l)" &&
- test 2 -eq "$(git ls-files -u two | wc -l)"
-+ test_line_count_cmd --out = 4 git ls-files -u &&
-+ test_line_count_cmd --out = 2 git ls-files -u one &&
-+ test_line_count_cmd --out = 2 git ls-files -u two
++ test_line_count_cmd = 4 git ls-files -u &&
++ test_line_count_cmd = 2 git ls-files -u one &&
++ test_line_count_cmd = 2 git ls-files -u two
else
- test 2 -eq "$(git ls-files -u | wc -l)" &&
- test 1 -eq "$(git ls-files -u one | wc -l)" &&
- test 1 -eq "$(git ls-files -u two | wc -l)"
-+ test_line_count_cmd --out = 2 git ls-files -u &&
-+ test_line_count_cmd --out = 1 git ls-files -u one &&
-+ test_line_count_cmd --out = 1 git ls-files -u two
++ test_line_count_cmd = 2 git ls-files -u &&
++ test_line_count_cmd = 1 git ls-files -u one &&
++ test_line_count_cmd = 1 git ls-files -u two
fi &&
test_must_fail git diff --quiet &&
@@ t/t6402-merge-rename.sh: test_expect_success 'check handling of differently rena
- test 1 -eq "$(git ls-files -u two~second-rename | wc -l)" &&
- test 1 -eq "$(git ls-files -u original | wc -l)" &&
- test 0 -eq "$(git ls-files -o | wc -l)"
-+ test_line_count_cmd --out = 5 git ls-files -s &&
-+ test_line_count_cmd --out = 3 git ls-files -u &&
-+ test_line_count_cmd --out = 1 git ls-files -u one~HEAD &&
-+ test_line_count_cmd --out = 1 git ls-files -u two~second-rename &&
-+ test_line_count_cmd --out = 1 git ls-files -u original &&
-+ test_line_count_cmd --out = 0 git ls-files -o
++ test_line_count_cmd = 5 git ls-files -s &&
++ test_line_count_cmd = 3 git ls-files -u &&
++ test_line_count_cmd = 1 git ls-files -u one~HEAD &&
++ test_line_count_cmd = 1 git ls-files -u two~second-rename &&
++ test_line_count_cmd = 1 git ls-files -u original &&
++ test_line_count_cmd = 0 git ls-files -o
else
- test 5 -eq "$(git ls-files -s | wc -l)" &&
- test 3 -eq "$(git ls-files -u | wc -l)" &&
@@ t/t6402-merge-rename.sh: test_expect_success 'check handling of differently rena
- test 1 -eq "$(git ls-files -u two | wc -l)" &&
- test 1 -eq "$(git ls-files -u original | wc -l)" &&
- test 2 -eq "$(git ls-files -o | wc -l)"
-+ test_line_count_cmd --out = 5 git ls-files -s &&
-+ test_line_count_cmd --out = 3 git ls-files -u &&
-+ test_line_count_cmd --out = 1 git ls-files -u one &&
-+ test_line_count_cmd --out = 1 git ls-files -u two &&
-+ test_line_count_cmd --out = 1 git ls-files -u original &&
-+ test_line_count_cmd --out = 2 git ls-files -o
++ test_line_count_cmd = 5 git ls-files -s &&
++ test_line_count_cmd = 3 git ls-files -u &&
++ test_line_count_cmd = 1 git ls-files -u one &&
++ test_line_count_cmd = 1 git ls-files -u two &&
++ test_line_count_cmd = 1 git ls-files -u original &&
++ test_line_count_cmd = 2 git ls-files -o
fi &&
test_path_is_file one/file &&
@@ t/t6402-merge-rename.sh: test_expect_success 'check handling of differently rena
- test 1 -eq "$(git ls-files -u two | wc -l)" &&
- test 1 -eq "$(git ls-files -u original | wc -l)" &&
- test 0 -eq "$(git ls-files -o | wc -l)" &&
-+ test_line_count_cmd --out = 3 git ls-files -u &&
-+ test_line_count_cmd --out = 1 git ls-files -u one &&
-+ test_line_count_cmd --out = 1 git ls-files -u two &&
-+ test_line_count_cmd --out = 1 git ls-files -u original &&
-+ test_line_count_cmd --out = 0 git ls-files -o &&
++ test_line_count_cmd = 3 git ls-files -u &&
++ test_line_count_cmd = 1 git ls-files -u one &&
++ test_line_count_cmd = 1 git ls-files -u two &&
++ test_line_count_cmd = 1 git ls-files -u original &&
++ test_line_count_cmd = 0 git ls-files -o &&
test_path_is_file one &&
test_path_is_file two &&
@@ t/t6402-merge-rename.sh: test_expect_success 'setup merge of rename + small chan
- test 1 -eq $(git ls-files -s | wc -l) &&
- test 0 -eq $(git ls-files -o | wc -l) &&
-+ test_line_count_cmd --out = 1 git ls-files -s &&
-+ test_line_count_cmd --out = 0 git ls-files -o &&
++ test_line_count_cmd = 1 git ls-files -s &&
++ test_line_count_cmd = 0 git ls-files -o &&
test $(git rev-parse HEAD:renamed_file) = $(git rev-parse HEAD~1:file)
'
--
2.32.0.278.gd42b80f139
next prev parent reply other threads:[~2021-06-19 1:31 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 ` Đoàn Trần Công Danh [this message]
2021-06-19 5:50 ` [PATCH v3 0/4] t: new helper test_line_count_cmd 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 ` [PATCH v5 1/3] test-lib-functions: introduce test_stdout_line_count Đoàn Trần Công Danh
2021-07-04 5:56 ` 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210619013035.26313-1-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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.