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

Re: [PATCH 04/11] t3030-merge-recursive: don't check the stderr of a subshell

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 27, 2018, 21:10 UTC
Message-ID
<xmqqpo4qp290.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<xmqqtvu2p2kx.fsf@gitster-ct.c.googlers.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 25 quoted lines
> SZEDER Gábor <szeder.dev@gmail.com> writes:
>
>> The two test checking 'git mmerge-recursive' in an empty worktree in
>> ...
>>  		GIT_INDEX_FILE="$PWD/ours-has-rename-index" &&
>>  		export GIT_INDEX_FILE &&
>>  		mkdir "$GIT_WORK_TREE" &&
>> -		git read-tree -i -m $c7 &&
>> -		git update-index --ignore-missing --refresh &&
>> -		git merge-recursive $c0 -- $c7 $c3 &&
>> -		git ls-files -s >actual-files
>> -	) 2>actual-err &&
>> -	>expected-err &&
>> +		git read-tree -i -m $c7 2>actual-err &&
>> +		test_must_be_empty expected-err &&
>> +		git update-index --ignore-missing --refresh 2>actual-err &&
>> +		test_must_be_empty expected-err &&
>> +		git merge-recursive $c0 -- $c7 $c3 2>actual-err &&
>> +		test_must_be_empty expected-err &&
>> +		git ls-files -s >actual-files 2>actual-err &&
>> +		test_must_be_empty expected-err
>
> Where do the contents of all of these expected-err files come from?
> Should all of the test_must_be_empty checks be checking actual-err
> instead?

And the reason why your pre-submission testing did not catch may be because test_must_be_empty is broken? I wonder if this is a good way forward to catch a possible bug like this.

Of course, if somebody was using the helepr for "must be either missing or empty", this change will break it, but I somehow doubt it. A program that creates/opens and writes an error message only when an error is detected is certainly possible, and could be tested with the current test_must_be_empty this way:

	rm -f actual-err &&
	git frotz --error-to=actual-err &&
	test_must_be_empty actual-err

but then the last step in such a test like the above is more natural to check if actual-err _exists_ in the first place anyway, so...

 t/test-lib-functions.sh | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 37eb34044a..6cfbee60e4 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -772,7 +772,11 @@ verbose () {
 # otherwise.
 
 test_must_be_empty () {
-	if test -s "$1"
+	if ! test -f "$1"
+	then
+		echo "'$1' is missing"
+		return 1
+	elif test -s "$1"
 	then
 		echo "'$1' is not empty, it contains:"
 		cat "$1"
Previous: Junio C HamanoNext: Junio C Hamano
Message 13 of 26 in “Make the test suite pass with '-x' and /bin/sh”
  1. 00/11 Make the test suite pass with '-x' and /bin/shSZEDER Gábor, Feb 23, 2018
  2. 02/11 t: add means to disable '-x' tracing for individual test scriptsSZEDER Gábor, Feb 23, 2018
  3. 01/11 t: prevent '-x' tracing from interfering with test helpers' stderrSZEDER Gábor, Feb 23, 2018
  4. SZEDER GáborFeb 24, 2018
  5. t: prevent '-x' tracing from interfering with test helpers' stderrSZEDER Gábor, Feb 25, 2018
  6. 03/11 t1507-rev-parse-upstream: don't check the stderr of a shell functionSZEDER Gábor, Feb 23, 2018
  7. 05/11 t5500-fetch-pack: don't check the stderr of a subshellSZEDER Gábor, Feb 23, 2018
  8. 07/11 t5570-git-daemon: don't check the stderr of a subshellSZEDER Gábor, Feb 23, 2018
  9. 11/11 travis-ci: run tests with '-x' tracingSZEDER Gábor, Feb 23, 2018
  10. 04/11 t3030-merge-recursive: don't check the stderr of a subshellSZEDER Gábor, Feb 23, 2018
  11. Eric SunshineFeb 24, 2018
  12. Junio C HamanoFeb 27, 2018
  13. Junio C HamanoFeb 27, 2018
  14. test_must_be_empty: make sure the file exists, not just emptyJunio C Hamano, Feb 27, 2018
  15. Stefan BellerFeb 27, 2018
  16. Jeff KingFeb 27, 2018
  17. SZEDER GáborFeb 27, 2018
  18. Junio C HamanoFeb 27, 2018
  19. SZEDER GáborFeb 28, 2018
  20. 10/11 t/README: add a note about don't saving stderr of compound commandsSZEDER Gábor, Feb 23, 2018
  21. 08/11 t9903-bash-prompt: don't check the stderr of __git_ps1()SZEDER Gábor, Feb 23, 2018
  22. 06/11 t5526: use $TRASH_DIRECTORY to specify the path of GIT_TRACE log fileSZEDER Gábor, Feb 23, 2018
  23. 09/11 t1510-repo-setup: mark as untraceable with '-x'SZEDER Gábor, Feb 23, 2018
  24. SZEDER GáborMar 2, 2018
  25. Jeff KingMar 3, 2018
  26. SZEDER GáborMar 5, 2018

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.