Subject: Re: [PATCH alt-v3] Improve function dir.c:trim_trailing_spaces()

From: Junio C Hamano <[email-masked]>
Date: Fri, 13 Jun 2014 13:23:47 -0700

Pasha Bolokhov <[email-masked]> writes:

> diff --git a/t/t0008-ignores.sh b/t/t0008-ignores.sh
> index 63beb99..5ef5ad3 100755
> --- a/t/t0008-ignores.sh
> +++ b/t/t0008-ignores.sh
> @@ -806,4 +806,27 @@ test_expect_success !MINGW 'quoting allows trailing whitespace' '
>  	test_cmp err.expect err
>  '
>  
> +test_expect_success NOT_MINGW,NOT_CYGWIN 'correct handling of backslashes' '
> +	rm -rf whitespace &&
> +	mkdir whitespace &&
> +	>"whitespace/trailing 1  " &&
> +	>"whitespace/trailing 2 \\\\" &&
> +	>"whitespace/trailing 3 \\\\" &&
> +	>"whitespace/trailing 4   \\ " &&
> +	>"whitespace/trailing 5 \\ \\ " &&
> +	>"whitespace/trailing 6 \\a\\" &&
> +	>whitespace/untracked &&
> +	echo "whitespace/trailing 1 \\    " >ignore  &&
> +	echo "whitespace/trailing 2 \\\\\\\\\\\\\\\\" >>ignore &&
> +	echo "whitespace/trailing 3 \\\\\\\\\\\\\\\\ " >>ignore &&
> +	echo "whitespace/trailing 4   \\\\\\\\\\\\    " >>ignore &&
> +	echo "whitespace/trailing 5 \\\\\\\\ \\\\\\\\\\\\   " >>ignore &&
> +	echo "whitespace/trailing 6 \\\\\\\\a\\\\\\\\" >>ignore &&
> +	echo whitespace/untracked >expect &&
> +	>err.expect &&
> +	git ls-files -o -X ignore whitespace >actual 2>err &&
> +	test_cmp expect actual &&
> +	test_cmp err.expect err
> +'

This passes with your shell set to dash but fails with bash.

Let's fix it up like so.

 t/t0008-ignores.sh | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/t/t0008-ignores.sh b/t/t0008-ignores.sh
index 5ef5ad3..39e55a1 100755
--- a/t/t0008-ignores.sh
+++ b/t/t0008-ignores.sh
@@ -816,12 +816,14 @@ test_expect_success NOT_MINGW,NOT_CYGWIN 'correct handling of backslashes' '
 	>"whitespace/trailing 5 \\ \\ " &&
 	>"whitespace/trailing 6 \\a\\" &&
 	>whitespace/untracked &&
-	echo "whitespace/trailing 1 \\    " >ignore  &&
-	echo "whitespace/trailing 2 \\\\\\\\\\\\\\\\" >>ignore &&
-	echo "whitespace/trailing 3 \\\\\\\\\\\\\\\\ " >>ignore &&
-	echo "whitespace/trailing 4   \\\\\\\\\\\\    " >>ignore &&
-	echo "whitespace/trailing 5 \\\\\\\\ \\\\\\\\\\\\   " >>ignore &&
-	echo "whitespace/trailing 6 \\\\\\\\a\\\\\\\\" >>ignore &&
+	sed -e "s/Z$//" >ignore <<-\EOF &&
+	whitespace/trailing 1 \    Z
+	whitespace/trailing 2 \\\\Z
+	whitespace/trailing 3 \\\\ Z
+	whitespace/trailing 4   \\\    Z
+	whitespace/trailing 5 \\ \\\   Z
+	whitespace/trailing 6 \\a\\Z
+	EOF
 	echo whitespace/untracked >expect &&
 	>err.expect &&
 	git ls-files -o -X ignore whitespace >actual 2>err &&