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

Re: [PATCH] t0004: replace test -e with test_path_exists

From
Jeff King <peff@peff.net>
Date
Mar 9, 2026, 22:47 UTC
Message-ID
<20260309224739.GA5682@coredump.intra.peff.net>
In-Reply-To
<xmqq4imo4sf1.fsf@gitster.g>
On Mon, Mar 09, 2026 at 02:14:10PM -0700, Junio C Hamano wrote:
Show 17 quoted lines
> PRASHANT S BISHT <prashantjee2025@gmail.com> writes:
> 
> > -test_lazy_prereq WRITE_TREE_OUT 'test -e "$TRASH_DIRECTORY"/out.write-tree'
> > +test_lazy_prereq WRITE_TREE_OUT 'test_path_exists "$TRASH_DIRECTORY/out.write-tree"'
> 
> I suspect this is utterly wrong.  As you wrote in the proposed log
> message, test_path_exists is *NOT* about checking if the path
> exists.  It rather is about *expecting* for the path to exist, and
> fail *LOUDLY* if it does not.
> 
> You need to _think_ if we want a LOUD failure when somebody checks
> if a path exists and conditionally skip setting a test prerequisite
> when the path does not exist.  The original code is trying to be
> quiet, as the check is done not because existence of the checked
> path is good and lack of it is a test failure.  Lack of the path is
> expected on places where the prerequisite is not set, and that by
> itself is not a test failure that you want a LOUD report about.

I'm not sure I agree. Verbose prereq blocks can help with debugging. Normally you would not see them at all, but if you are investigating why a prereq did not trigger, you may want more output.

Without "-v" you would not see the output either way, like:
  ok 1 # skip some test (missing FOO)
But with it, it is the difference between:
  checking prerequisite: FOO
  
  mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FOO" &&
  (
  	cd "$TRASH_DIRECTORY/prereq-test-dir-FOO" &&
  	test -e foo
  
  )
  prerequisite FOO not satisfied
  ok 1 # skip some test (missing FOO)
and:
  checking prerequisite: FOO
  
  mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FOO" &&
  (
  	cd "$TRASH_DIRECTORY/prereq-test-dir-FOO" &&
  	test_path_exists foo
  
  )
  Path foo doesn't exist
  prerequisite FOO not satisfied
  ok 1 # skip some test (missing FOO)

Probably it's pretty obvious for a one-liner like this, but I think it would help for a longer block.

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 5 in “t0004: replace test -e with test_path_exists”
  1. t0004: replace test -e with test_path_existsPRASHANT S BISHT, Mar 9, 2026
  2. Junio C HamanoMar 9, 2026
  3. Jeff KingMar 9, 2026
  4. Junio C HamanoMar 9, 2026
  5. t4200: convert test -[df] checks to test_path_* helpersPRASHANT S BISHT, Mar 16, 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.