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

Re: [GSoC][PATCH v2 1/3] test functions: add function `test_file_not_empty`

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 4, 2019, 03:45 UTC
Message-ID
<xmqqo96rxpyi.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<20190303233750.6500-2-rohit.ashiwal265@gmail.com>
Rohit Ashiwal <rohit.ashiwal265@gmail.com> writes:
> test-lib-functions: add a helper function that checks for a file and that
> the file is not empty. The helper function will provide better error message
> in case of failure and improve readability

Avoid making the log message into an enumerated list, when there aren't that many things to enumerate to begin with (specifically, the "test-lib-functions:" label is unsightly here). Finish the sentence with a full stop.

	Add a helper function to ensure that a given path is a
	non-empty file, and give an error message when it is not.
	Give separate messages for the case when the path is missing
	or a non-file, and for the case when the path is a file but
	is empty.
should be sufficient.
I still do not see why the posted code is better than this
	if ! test -s "$1"
	then
		echo "'$1' is not a non-empty file.'
	fi
 
which is more to the point.  After all, if we are truly aiming for
finer-grained diagnosis, there is no good reason to accept a single
error message "does not exist or not a file" for these two cases,
but you'd be writing more like
	if ! test -e "$1"
	then
		echo "'$1' does not exist"
	elif ! test -f "$1"
	then
		echo "'$1' is not a file"
	elif ! test -s "$1"
	then
		echo "'$1' is not empty"
	else
		: happy
		return
	fi
	false

But I do not see much point in doing so, and I do not see much point in the version that makes an extra check only for "test -f", either.

Show 22 quoted lines
> diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
> index 80402a428f..f9fcd2e013 100644
> --- a/t/test-lib-functions.sh
> +++ b/t/test-lib-functions.sh
> @@ -593,6 +593,21 @@ test_dir_is_empty () {
>  	fi
>  }
>  
> +# Check if the file exists and has a size greater than zero
> +test_file_not_empty () {
> +	if ! test -f "$1"
> +	then
> +		echo "'$1' does not exist or not a file."
> +		false
> +	else
> +		if ! test -s "$1"
> +		then
> +			echo "'$1' is an empty file."
> +			false
> +		fi
> +	fi
> +}
If I were writing this, I'd dedent it by turning this into
	if ! test -f ...
	then
		echo ...
	elif ! test -s ...
	then
		echo ...
	else
		: happy
		return
	fi
	false

But as I said, I do not see much point in the extra "test -f", so more likely this is what I would write, if I were doing this step myself:

	if test -s "$1"
	then
		: happy
	else
		echo "'$1' is not a non-empty file"
		false
	fi
> +
>  test_path_is_missing () {
>  	if test -e "$1"
>  	then
Previous: Rohit AshiwalNext: Rohit Ashiwal
Message 15 of 37 in “Use helper functions in test script”
  1. Rohit AshiwalMar 3, 2019
  2. 1/3 test functions: Add new function `test_file_not_empty`Rohit Ashiwal, Mar 3, 2019
  3. Junio C HamanoMar 3, 2019
  4. Rohit Ashiwal, Mar 3, 2019
  5. Junio C HamanoMar 3, 2019
  6. Clearing logicRohit Ashiwal, Mar 3, 2019
  7. Thomas GummererMar 3, 2019
  8. 2/3 t3600: refactor code according to contemporary guidelinesRohit Ashiwal, Mar 3, 2019
  9. Junio C HamanoMar 3, 2019
  10. Rohit AshiwalMar 3, 2019
  11. 3/3 t3600: use helper functions from test-lib-functionsRohit Ashiwal, Mar 3, 2019
  12. Junio C HamanoMar 3, 2019
  13. [GSoC][PATCH v2 0/3] Use helper functions in test scriptRohit Ashiwal, Mar 3, 2019
  14. [GSoC][PATCH v2 1/3] test functions: add function `test_file_not_empty`Rohit Ashiwal, Mar 3, 2019
  15. Junio C HamanoMar 4, 2019
  16. [GSoC][PATCH v2 2/3] t3600: restructure code according to contemporary guidelinesRohit Ashiwal, Mar 3, 2019
  17. Junio C HamanoMar 4, 2019
  18. [GSoC][PATCH v2 3/3] t3600: use helpers to replace test -d/f/e/s <path>Rohit Ashiwal, Mar 3, 2019
  19. [GSoC][PATCH v3 0/3] Use helper functions in test scriptRohit Ashiwal, Mar 4, 2019
  20. [GSoC][PATCH v3 1/3] test functions: add function `test_file_not_empty`Rohit Ashiwal, Mar 4, 2019
  21. Eric SunshineMar 5, 2019
  22. Junio C HamanoMar 5, 2019
  23. Rohit AshiwalMar 5, 2019
  24. [GSoC][PATCH v3 2/3] t3600: modernize styleRohit Ashiwal, Mar 4, 2019
  25. Eric SunshineMar 5, 2019
  26. Junio C HamanoMar 5, 2019
  27. [GSoC][PATCH v3 3/3] t3600: use helpers to replace test -d/f/e/s <path>Rohit Ashiwal, Mar 4, 2019
  28. Eric SunshineMar 5, 2019
  29. Rohit AshiwalMar 5, 2019
  30. Eric SunshineMar 5, 2019
  31. Rohit AshiwalMar 5, 2019
  32. Eric SunshineMar 5, 2019
  33. Rohit AshiwalMar 5, 2019
  34. Junio C HamanoMar 8, 2019
  35. Eric SunshineMar 8, 2019
  36. Junio C HamanoMar 11, 2019
  37. Eric SunshineMar 5, 2019

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.