Subject: Re: [PATCH] test-lib.sh: use printf instead of echo

From: Junio C Hamano <[email-masked]>
Date: Mon, 17 Mar 2014 12:26:42 -0700

Jonathan Nieder <[email-masked]> writes:

> Uwe Storbeck wrote:
>
>> Backslash sequences are interpreted as control characters
>> by the echo command of some shells (e.g. dash).
>
> This has bothered me for a while but never enough to do anything about
> it.  Thanks for fixing it.
>
>> Signed-off-by: Uwe Storbeck <[email-masked]>
>
> Reviewed-by: Jonathan Nieder <[email-masked]>
>
> (patch left unsnipped for reference)
>> ---
>>  t/test-lib.sh | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>> 
>> diff --git a/t/test-lib.sh b/t/test-lib.sh
>> index 1531c24..8209204 100644
>> --- a/t/test-lib.sh
>> +++ b/t/test-lib.sh
>> @@ -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/^/#	/'

This is wrong, isn't it?  Why do we want one line per item here?

>>  	test "$immediate" = "" || { GIT_EXIT_OK=t; exit 1; }
>>  }
>>