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

Re: [PATCH v2 04/15] test-dir-iterator: consistently return EXIT_FAILURE or EXIT_SUCCESS

From
Junio C Hamano <gitster@pobox.com>
Date
May 9, 2022, 21:03 UTC
Message-ID
<xmqq35hictaa.fsf@gitster.g>
In-Reply-To
<20220509175159.2948802-5-kioplato@gmail.com>
Plato Kiorpelidis <kioplato@gmail.com> writes:
Show 9 quoted lines
> Throughout test-dir-iterator.c we were returning/exiting with either
> integers or EXIT_FAILURE. Improve readability and reduce mental load
> by being consistent with what test-dir-iterator returns through the
> test-tool. Returning mixed constants and integers could indicate that
> it matters for some reason e.g. architecture of test-tool and cmd__*
> functions.
>
> EXIT_SUCCESS and EXIT_FAILURE are specified by the C standard.
> That makes the code more portable and standardized.

And less portable for the invoking process of "git". The invoking process used to be able to depend ou getting WEXITSTATUS() from our exit status to obtain "1" when we exited with 1; if we start exiting with EXIT_FAILURE, there is no guarantee what non-zero value is used.

So, I am not sure if this is a good direction to go in.
> Signed-off-by: Plato Kiorpelidis <kioplato@gmail.com>
> ---
>  t/helper/test-dir-iterator.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)

Especially given that this is a helper for testing, we may want to return/exit with different non-zero value at different places to make it easier for the test script to tell where in the program we decided to exit a failure. IOW, if we return not EXIT_FAILURE but 2 (or whatever value that is not used elsewhere) in the first hunk, and let the second hunk continue to return 1, then the calling test script can tell which one decided to fail.

As to EXIT_SUCCESS, I do not have a strong opinion against it, but because EXIT_FAILURE is a bad idea, we probably should avoid it for consistency.

Thanks.
Show 24 quoted lines
> diff --git a/t/helper/test-dir-iterator.c b/t/helper/test-dir-iterator.c
> index 659b6bfa81..81e931673e 100644
> --- a/t/helper/test-dir-iterator.c
> +++ b/t/helper/test-dir-iterator.c
> @@ -39,7 +39,7 @@ int cmd__dir_iterator(int argc, const char **argv)
>  
>  	if (!diter) {
>  		printf("dir_iterator_begin failure: %s\n", error_name(errno));
> -		exit(EXIT_FAILURE);
> +		return EXIT_FAILURE;
>  	}
>  
>  	while ((iter_status = dir_iterator_advance(diter)) == ITER_OK) {
> @@ -58,8 +58,8 @@ int cmd__dir_iterator(int argc, const char **argv)
>  
>  	if (iter_status != ITER_DONE) {
>  		printf("dir_iterator_advance failure\n");
> -		return 1;
> +		return EXIT_FAILURE;
>  	}
>  
> -	return 0;
> +	return EXIT_SUCCESS;
>  }
Previous: Plato KiorpelidisNext: Plato Kiorpelidis
Message 6 of 31 in “[GSoC] iterate dirs before or after their contents”
  1. 00/15 [GSoC] iterate dirs before or after their contentsPlato Kiorpelidis, May 9, 2022
  2. 01/15 t0066: refactor dir-iterator testsPlato Kiorpelidis, May 9, 2022
  3. 02/15 t0066: remove dependency between unrelated testsPlato Kiorpelidis, May 9, 2022
  4. 03/15 t0066: shorter expected and actual output file namesPlato Kiorpelidis, May 9, 2022
  5. 04/15 test-dir-iterator: consistently return EXIT_FAILURE or EXIT_SUCCESSPlato Kiorpelidis, May 9, 2022
  6. Junio C HamanoMay 9, 2022
  7. Plato KiorpelidisMay 18, 2022
  8. Junio C HamanoMay 18, 2022
  9. 05/15 test-dir-iterator: print EACCES and ELOOP errno set by dir_iteratorPlato Kiorpelidis, May 9, 2022
  10. 06/15 test-dir-iterator: print errno name set by dir_iterator_advancePlato Kiorpelidis, May 9, 2022
  11. 09/15 t0066: rename test directoriesPlato Kiorpelidis, May 9, 2022
  12. 08/15 t0066: reorder tests from simple to more complexPlato Kiorpelidis, May 9, 2022
  13. 07/15 t0066: better test coverage for dir-iteratorPlato Kiorpelidis, May 9, 2022
  14. 10/15 dir-iterator: refactor dir_iterator_advance()Plato Kiorpelidis, May 9, 2022
  15. Junio C HamanoMay 9, 2022
  16. Plato KiorpelidisMay 18, 2022
  17. Phillip WoodMay 10, 2022
  18. 11/15 dir-iterator: open root dir in dir_iterator_begin()Plato Kiorpelidis, May 9, 2022
  19. 12/15 t0066: rename subtest descriptionsPlato Kiorpelidis, May 9, 2022
  20. 15/15 entry.c: use dir-iterator to avoid explicit dir traversalPlato Kiorpelidis, May 9, 2022
  21. Phillip WoodMay 10, 2022
  22. 13/15 dir-iterator: option to iterate dirs in pre-orderPlato Kiorpelidis, May 9, 2022
  23. Phillip WoodMay 10, 2022
  24. Plato KiorpelidisMay 18, 2022
  25. rsbecker@nexbridge.comMay 18, 2022
  26. Junio C HamanoMay 18, 2022
  27. rsbecker@nexbridge.comMay 18, 2022
  28. 14/15 dir-iterator: option to iterate dirs in post-orderPlato Kiorpelidis, May 9, 2022
  29. Phillip WoodMay 10, 2022
  30. Junio C HamanoMay 10, 2022
  31. Plato KiorpelidisMay 20, 2022

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.