From: Thomas Rast Date: Wed, 07 Aug 2013 08:58:24 GMT Subject: Re: [PATCH] die_with_status: use "printf '%s\n'", not "echo" Message-ID: <871u65yj0v.fsf@linux-k42r.v.cablecom.net> In-Reply-To: <1375813604-10565-1-git-send-email-Matthieu.Moy@imag.fr> Matthieu Moy writes: > At least GNU echo interprets backslashes in its arguments. > > This triggered at least one bug: the error message of "rebase -i" was > turning \t in commit messages into actual tabulations. There may be > others. > > Using "printf '%s\n'" instead avoids this bad behavior, and is the form > used by the "say" function. > > Noticed-by: David Kastrup > Signed-off-by: Matthieu Moy [...] > +test_expect_success 'rebase -i error on commits with \ in message' ' > + current_head=$(git rev-parse HEAD) > + test_when_finished "git rebase --abort; git reset --hard $current_head; rm -f error" && > + test_commit TO-REMOVE will-conflict old-content && > + test_commit "\temp" will-conflict new-content dummy && > + ( > + EDITOR=true && > + export EDITOR && > + test_must_fail git rebase -i HEAD^ --onto HEAD^^ 2>error > + ) && > + grep -v " " error Umm, doesn't that only test that _some_ line in the error does not contain a tab? Whereas you need to test that _no_ line contains emp, or some such. Perhaps as ! grep -v " emp" error > +' > + > test_done -- Thomas Rast trast@{inf,student}.ethz.ch