Re: Test failures with GNU grep 2.23
- From
Jeff King <peff@peff.net>
- Date
- Feb 19, 2016, 11:59 UTC
- Message-ID
- <20160219115928.GA10204@sigill.intra.peff.net>
- In-Reply-To
- <20160207162540.GK29880@serenity.lan>
On Sun, Feb 07, 2016 at 04:25:40PM +0000, John Keeping wrote:
> It seems that binary file detection has changed in GNU grep 2.23 as a > result of commit 40ed879 (grep: fix bug with with invalid unibyte > sequence).
I read this bug report a while ago when you posted it, but happily ignored it until today, when my debian unstable system pulled in the new version of grep. :)
Show 10 quoted lines
> This causes a couple of test failures in t8005 and t9200 (the t9200 case > is less obvious so I'm only including t8005 here): > > -- >8 -- > $ ./t8005-blame-i18n.sh -v -i > [snip] > expecting success: > git blame --incremental file | \ > egrep "^(author|summary) " > actual && > test_cmp actual expected
Just a side note while we are touching these tests:
- we probably should not pipe, so we check the exist code from git-blame
- we usually flip the test_cmp file order, to show the difference from expectation when there is a failure
- no space after ">" redirection :)
Show 8 quoted lines
> The following patch fixes the tests for me, but I wonder if "-a" is
> supported on all target platforms (it's not in POSIX, which specifies
> that the "input files shall be text files") or whether we should do
> something more comprehensive to provide sane_{e,f,}grep which guarantee
> to treat input as text.
>
> I also tried setting POSIXLY_CORRECT but that doesn't affect the
> text/binary decision.Yeah, I'd worry that "-a" is not portable. OTOH, BSD grep seems to have it, so between that and GNU, I think most systems are covered. We could do:
test_lazy_prereq GREP_A ' echo foo | grep -a foo '
and mark these tests with it. I'd also be happy to skip that step and just do it if and when somebody actually complains about a system without it (I wouldn't be surprised if most people on antique systems end up installing GNU grep anyway).
Another option might be using "sed -ne '/^author/p'" or similar. But that may very well just be trading one portability problem for another.
I also wondered whether we could get away without grepping at all here. But the blame output has a bunch of cruft we don't care about; I think the readability of the tests would suffer if we tried to match the whole thing in a test_cmp.
-Peff