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

Re: [PATCH 1/2] tests: make test_must_fail more verbose

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Aug 31, 2010, 17:10 UTC
Message-ID
<20100831171055.GO2315@burratino>
In-Reply-To
<20100831155636.GA11530@sigill.intra.peff.net>
Jeff King wrote:
Show 17 quoted lines
> --- a/t/test-lib.sh
> +++ b/t/test-lib.sh
> @@ -591,7 +591,15 @@ test_path_is_missing () {
>  
>  test_must_fail () {
>  	"$@"
> -	test $? -gt 0 -a $? -le 129 -o $? -gt 192
> +	exit_code=$?
> +	if test $exit_code = 0; then
> +		echo >&2 "test_must_fail: command succeeded: $*"
> +		return 1
> +	elif test $exit_code -gt 129 -a $exit_code -le 192; then
> +		echo >&2 "test_must_fail: died by signal: $*"
> +		return 1
> +	fi
> +	return 0
>  }
Can the exit status (e.g. from a shell function) be negative?

Though your patch does not affect this, a command interrupted by a signal will receive exit status > 192 in shells like ksh93. Posix says:

	As explained in other sections, certain exit status values
	have been reserved for special uses and should be used by
	applications only for those purposes:
	126
		A file to be executed was found, but it was not an
		executable utility.
	127
		A utility to be executed was not found.
	>128
		A command was interrupted by a signal.
Unfortunately that does not agree with git usage.
	129
		Incorrect command-line usage, or help requested
		(rather than SIGHUP).
	255
		Failed to create pipe for child process, fork
		failed, execvp failed, wait failed, invalid
		pathspec for add --patch, "git archive" or
		"git daemon" failure (rather than signal 127).
Here's a test_might_fail patch for consistency.
-- 8< --
Subject: tests: make test_might_fail more verbose

Let test_might_fail say something about its failures for consistency with test_must_fail.

Cc: Jeff King <peff@peff.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 t/test-lib.sh |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 285bfd8..506787c 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -615,7 +615,12 @@ test_must_fail () {
 
 test_might_fail () {
 	"$@"
-	test $? -ge 0 -a $? -le 129 -o $? -gt 192
+	exit_code=$?
+	if test $exit_code -gt 129 -a $exit_code -le 192; then
+		echo >&2 "test_might_fail: died by signal: $*"
+		return 1
+	fi
+	return 0
 }
 
 # test_cmp is a helper function to compare actual and expected output.
-- 
1.7.2.2
Previous: Jeff KingNext: Jeff King
Message 6 of 17 in “fix quotes in maint-reflog-beyond-horizon and detached-stash”
  1. 0/2 fix quotes in maint-reflog-beyond-horizon and detached-stashJon Seymour, Aug 31, 2010
  2. 1/2 maint-reflog-beyond-horizon: fix broken test_must_fail callsJon Seymour, Aug 31, 2010
  3. 2/2 detached-stash: fix broken test_must_fail callsJon Seymour, Aug 31, 2010
  4. Jeff KingAug 31, 2010
  5. 1/2 tests: make test_must_fail more verboseJeff King, Aug 31, 2010
  6. Jonathan NiederAug 31, 2010
  7. Jeff KingAug 31, 2010
  8. Jonathan NiederAug 31, 2010
  9. Jon SeymourSep 1, 2010
  10. Ævar Arnfjörð BjarmasonSep 1, 2010
  11. 2/2 tests: make test_must_fail fail on missing commandsJeff King, Aug 31, 2010
  12. Junio C HamanoAug 31, 2010
  13. Jeff KingAug 31, 2010
  14. Jonathan NiederAug 31, 2010
  15. Jeff KingAug 31, 2010
  16. Ævar Arnfjörð BjarmasonAug 31, 2010
  17. Junio C HamanoAug 31, 2010

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.