From: Junio C Hamano <gitster@pobox.com>
To: Zakariyah Ali <zakariyahali100@gmail.com>
Cc: git@vger.kernel.org, ayu.chandekar@gmail.com,
christian.couder@gmail.com, jltobler@gmail.com,
karthik.188@gmail.com, siddharthasthana31@gmail.com
Subject: Re: [GSoC PATCH v2] t2000: modernize path checks with test_path_is_* helpers
Date: Thu, 26 Mar 2026 13:29:31 -0700 [thread overview]
Message-ID: <xmqqzf3unxlg.fsf@gitster.g> (raw)
In-Reply-To: <20260326192603.23961-1-zakariyahali100@gmail.com> (Zakariyah Ali's message of "Thu, 26 Mar 2026 20:26:03 +0100")
Zakariyah Ali <zakariyahali100@gmail.com> writes:
> Replace bare 'test -f/-d' and 'test ! -h' assertions with dedicated
> helpers. These helpers report loudly what expectation wasn't met,
> therefore making debugging easier.
>
> Signed-off-by: Zakariyah Ali <zakariyahali100@gmail.com>
> ---
> t/t2000-conflict-when-checking-files-out.sh | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
There is nothing in the patch text or in the proposed log message
that is wrong per-se, but looking at the entire test script, it
needs a major clean-up to match the modern testing standard.
On top of the patch we see here, we may want to do a follow-up patch
series to clean them.
Here is how such a patch may start out. I think the remainder of
the file needs to be cleaned up similarly with about the same amount
of work.
---- >8 ----
Subject: t2000: modernise overall structure
This test script that dates back to 2005 certainly shows its age and
both its style and the way the tests are laid out do not match the
modern standard.
* Executables that prepare the data used to test the command
should be inside the test_expect_success block in modern tests.
* In modern tests, running a command that is being tested, making
sure it succeeds, and inspecting other side effects that are
expected, are all done in a single test_expect_success block.
* A test_expect_success block in modern tests are laid out as
test_expect_success 'title of the test' '
body of the test &&
...
body of the test
'
not as
test_expect_success \
'title of the test' \
'body of the test &&
...
body of the test'
which is in a prehistoric style.
* In modern tests, each &&-chained statement in the body of the
test_expect_success block are indented with a horizontal tab,
unlike prehistoric style that used 4-space indent.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
t/t2000-conflict-when-checking-files-out.sh | 43 ++++++++++++++---------------
1 file changed, 21 insertions(+), 22 deletions(-)
diff --git c/t/t2000-conflict-when-checking-files-out.sh w/t/t2000-conflict-when-checking-files-out.sh
index 96bae6c53d..39c80e80ea 100755
--- c/t/t2000-conflict-when-checking-files-out.sh
+++ w/t/t2000-conflict-when-checking-files-out.sh
@@ -35,32 +35,31 @@ show_files() {
sed -e 's/^\([0-9]*\) [^ ]* [0-9a-f]* /tr: \1 /'
}
-date >path0
-mkdir path1
-date >path1/file1
+test_expect_success 'prepare files path0 and path1/file1' '
+ date >path0 &&
+ mkdir path1 &&
+ date >path1/file1 &&
-test_expect_success \
- 'git update-index --add various paths.' \
- 'git update-index --add path0 path1/file1'
-
-rm -fr path0 path1
-mkdir path0
-date >path0/file0
-date >path1
+ git update-index --add path0 path1/file1
+'
-test_expect_success \
- 'git checkout-index without -f should fail on conflicting work tree.' \
- 'test_must_fail git checkout-index -a'
+test_expect_success 'prepare working tree files with D/F conflicts' '
+ rm -fr path0 path1 &&
+ mkdir path0 &&
+ date >path0/file0 &&
+ date >path1
+'
-test_expect_success \
- 'git checkout-index with -f should succeed.' \
- 'git checkout-index -f -a'
+test_expect_success 'git checkout-index without -f should fail on conflicting work tree.' '
+ test_must_fail git checkout-index -a
+'
-test_expect_success \
- 'git checkout-index conflicting paths.' \
- 'test_path_is_file path0 &&
- test_path_is_dir path1 &&
- test_path_is_file path1/file1'
+test_expect_success 'git checkout-index with -f should succeed.' '
+ git checkout-index -f -a &&
+ test_path_is_file path0 &&
+ test_path_is_dir path1 &&
+ test_path_is_file path1/file1
+'
test_expect_success SYMLINKS 'checkout-index -f twice with --prefix' '
mkdir -p tar/get &&
next prev parent reply other threads:[~2026-03-26 20:29 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-26 0:15 Github Patch Zakariyah Ali
2026-03-26 0:54 ` Pablo
2026-03-26 19:26 ` [GSoC PATCH v2] t2000: modernize path checks with test_path_is_* helpers Zakariyah Ali
2026-03-26 20:29 ` Junio C Hamano [this message]
2026-03-27 23:40 ` [GSoC][PATCH v3] t2000: modernise overall structure Zakariyah Ali
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=xmqqzf3unxlg.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=ayu.chandekar@gmail.com \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=jltobler@gmail.com \
--cc=karthik.188@gmail.com \
--cc=siddharthasthana31@gmail.com \
--cc=zakariyahali100@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox