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

[PATCH 1/1] tests: Allow customization of how say_color() prints

From
Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Date
Dec 15, 2012, 19:12 UTC
Message-ID
<50CCCB86.5080701@ramsay1.demon.co.uk>

Since commit 7bc0911d ("test-lib: Fix say_color () not to interpret \a\b\c in the message", 11-10-2012), the "--no-color" version of say_color() has been using the (bash builtin) printf function, rather than echo, to print the testsuite output. Due to an intermittent (and rare) failure of the printf builtin function on some older versions of cygwin, this leads to several (currently 7) test failures.

In order the fix the test failures, we provide a means to customize the function used by say_color() to print the output. The function is customized using GIT_TEST_PRINT[_LN] variables, which are set by default to keep the current behaviour unchanged, but may used from (say) the config.mak file to re-instate the use of echo. This could be done by adding the following to config.mak:

    GIT_TEST_PRINT=echo -nE
    GIT_TEST_PRINT_LN=echo -E
    export GIT_TEST_PRINT GIT_TEST_PRINT_LN

Note that the GIT_TEST_PRINT variable is used in the "--color" version of say_color(), and does not provide the line termination character. In contrast, the GIT_TEST_PRINT_LN variable is used by the "--no-color" version of say_color() and does provide the line termination.

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
---
 Makefile      |  6 ++++++
 t/test-lib.sh | 13 +++++++++++--
 2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 736ecd4..4f7803e 100644
--- a/Makefile
+++ b/Makefile
@@ -2603,6 +2603,12 @@ GIT-BUILD-OPTIONS: FORCE
 ifdef GIT_TEST_OPTS
 	@echo GIT_TEST_OPTS=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_OPTS)))'\' >>$@
 endif
+ifdef GIT_TEST_PRINT
+	@echo GIT_TEST_PRINT=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_PRINT)))'\' >>$@
+endif
+ifdef GIT_TEST_PRINT_LN
+	@echo GIT_TEST_PRINT_LN=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_PRINT_LN)))'\' >>$@
+endif
 ifdef GIT_TEST_CMP
 	@echo GIT_TEST_CMP=\''$(subst ','\'',$(subst ','\'',$(GIT_TEST_CMP)))'\' >>$@
 endif
diff --git a/t/test-lib.sh b/t/test-lib.sh
index f50f834..9dcf3c1 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -202,6 +202,15 @@ do
 	esac
 done
 
+if test -z "$GIT_TEST_PRINT"
+then
+	GIT_TEST_PRINT="printf %s"
+fi
+if test -z "$GIT_TEST_PRINT_LN"
+then
+	GIT_TEST_PRINT_LN="printf %s\n"
+fi
+
 if test -n "$color"
 then
 	say_color () {
@@ -221,7 +230,7 @@ then
 			test -n "$quiet" && return;;
 		esac
 		shift
-		printf "%s" "$*"
+		$GIT_TEST_PRINT "$*"
 		tput sgr0
 		echo
 		)
@@ -230,7 +239,7 @@ else
 	say_color() {
 		test -z "$1" && test -n "$quiet" && return
 		shift
-		printf "%s\n" "$*"
+		$GIT_TEST_PRINT_LN "$*"
 	}
 fi
 
-- 
1.8.0
Next: Junio C Hamano
Message 1 of 4 in “tests: Allow customization of how say_color() prints”
  1. 1/1 tests: Allow customization of how say_color() printsRamsay Jones, Dec 15, 2012
  2. Junio C HamanoDec 16, 2012
  3. Ramsay JonesDec 17, 2012
  4. Junio C HamanoDec 18, 2012

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.