git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [GSoC PATCH v2] t2000: modernize path checks with test_path_is_* helpers

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 26, 2026, 20:29 UTC
Message-ID
<xmqqzf3unxlg.fsf@gitster.g>
In-Reply-To
<20260326192603.23961-1-zakariyahali100@gmail.com>
Zakariyah Ali <zakariyahali100@gmail.com> writes:
Show 8 quoted lines
> 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 &&
Previous: Zakariyah AliNext: Zakariyah Ali
Message 4 of 17 in “Github Patch”
  1. Zakariyah AliMar 26, 2026
  2. PabloMar 26, 2026
  3. t2000: modernize path checks with test_path_is_* helpersZakariyah Ali, Mar 26, 2026
  4. Junio C HamanoMar 26, 2026
  5. [GSoC][PATCH v3] t2000: modernise overall structureZakariyah Ali, Mar 27, 2026
  6. Zakariyah AliMar 30, 2026
  7. Tian YuchenApr 1, 2026
  8. 1/1 t2000: modernize overall structure and path checksZakariyah Ali, Apr 5, 2026
  9. Karthik NayakApr 5, 2026
  10. Tian YuchenApr 6, 2026
  11. t2000: modernize overall structure and path checksZakariyah Ali, Apr 7, 2026
  12. Junio C HamanoApr 7, 2026
  13. Junio C HamanoApr 7, 2026
  14. t2000: consolidate second scenario into a single test blockZakariyah Ali, Apr 29, 2026
  15. Zakariyah AliMay 5, 2026
  16. Junio C HamanoMay 12, 2026
  17. Zakariyah AliMay 12, 2026

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.