Re: [PATCH 1/2] t8005: avoid grep on non-ASCII data
- From
John Keeping <john@keeping.me.uk>
- Date
- Feb 21, 2016, 23:41 UTC
- Message-ID
- <20160221234135.GA14382@river.lan>
- In-Reply-To
- <20160221231913.GA4094@sigill.intra.peff.net>
On Sun, Feb 21, 2016 at 06:19:14PM -0500, Jeff King wrote:
Show 33 quoted lines
> On Sun, Feb 21, 2016 at 04:01:27PM -0500, Eric Sunshine wrote: > > > On Sun, Feb 21, 2016 at 12:32 PM, John Keeping <john@keeping.me.uk> wrote: > > > GNU grep 2.23 detects the input used in this test as binary data so it > > > does not work for extracting lines from a file. We could add the "-a" > > > option to force grep to treat the input as text, but not all > > > implementations support that. Instead, use sed to extract the desired > > > lines since it will always treat its input as text. > > > > > > While touching these lines, modernize the test style to avoid hiding the > > > exit status of "git blame" and remove a space following a redirection > > > operator. > > > > > > Signed-off-by: John Keeping <john@keeping.me.uk> > > > --- > > > diff --git a/t/t8005-blame-i18n.sh b/t/t8005-blame-i18n.sh > > > @@ -35,8 +35,8 @@ EOF > > > test_expect_success !MINGW \ > > > 'blame respects i18n.commitencoding' ' > > > - git blame --incremental file | \ > > > - egrep "^(author|summary) " > actual && > > > + git blame --incremental file >output && > > > + sed -ne "/^\(author\|summary\) /p" output >actual && > > > > These tests all crash and burn with BSD sed (including Mac OS X) since > > you're not restricting yourself to BRE (basic regular expressions). > > You _could_ request extended regular expressions, which do work on > > those platforms, as well as with GNU sed: > > > > sed -nEe "/^(author|summary) /p" ... > > At that point, I think we may as well use grep, because obscure > platforms are probably broken either way.
Also GNU sed doesn't understand "-E", it uses "-r" for --regexp-extended.
Show 10 quoted lines
> I'm tempted to just go the perl route. We already depend on at least a > baisc version of perl5 being installed for many of the other tests, so > it's not really introducing a new dependency. > > Something like the patch below works for me. I think we could make it > shorter by using $PERLIO to get the raw behavior, but using binmode will > work even on ancient versions of perl. > > John, if you agree on the direction, feel free to combine it with your > patch.
My original sed version was:
sed -ne "/^author /p" -e "/^summary /p"
which I think will work on all platforms (we already use it in t0000-basic.sh) but then I decided to be too clever :-(
I still think sed is simpler than introducing a new function to wrap a perl script.