test-lib.sh: do not "echo" caller-supplied strings
authorUwe Storbeck <uwe@ibr.ch>
Tue, 18 Mar 2014 00:14:11 +0000 (01:14 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 18 Mar 2014 18:48:00 +0000 (11:48 -0700)
In some places we "echo" a string that is supplied by the calling
test script and may contain backslash sequences. The echo command
of some shells, most notably "dash", interprets these backslash
sequences (POSIX.1 allows this) which may scramble the test
output.

Signed-off-by: Uwe Storbeck <uwe@ibr.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/test-lib.sh
index 1531c241c08f0fad1a8e0789dbed2675b0fe5e56..3c7cb1d774cadaa4d625e2d53ba122db4108cb0e 100644 (file)
@@ -277,7 +277,7 @@ error "Test script did not set test_description."
 
 if test "$help" = "t"
 then
-       echo "$test_description"
+       printf '%s\n' "$test_description"
        exit 0
 fi
 
@@ -328,7 +328,7 @@ test_failure_ () {
        test_failure=$(($test_failure + 1))
        say_color error "not ok $test_count - $1"
        shift
-       echo "$@" | sed -e 's/^/#       /'
+       printf '%s\n' "$*" | sed -e 's/^/#      /'
        test "$immediate" = "" || { GIT_EXIT_OK=t; exit 1; }
 }