On Wed, Jan 09, 2019 at 01:56:28PM +0100, SZEDER Gábor wrote: > On Wed, Jan 02, 2019 at 12:34:54PM +0800, Jiang Xin wrote: > > +cat >expected <<EOF > > +P1:$P1 > > +P4:$P4 > > +P5:$P5 > > +P6:$P6 > > +EOF Creating the expected results could be moved into the test_expect_success block as well. > > + > > +test_expect_success 'git pack-redundant --all' ' > > + git pack-redundant --all | \ > > Don't run a git command (especially the particular command the test > script focuses on) upstream of a pipe, because it hides the command's > exit code. Use an intermediate file instead. > > > + sed -e "s#^.*/pack-\(.*\)\.\(idx\|pack\)#\1#g" | \ > > This sed command doesn't seem to work on macOS (on Travis CI), and > causes the test to fail with: > > ++git pack-redundant --all > ++sed -e 's#^.*/pack-\(.*\)\.\(idx\|pack\)#\1#g' > ++sort -u > ++read p > ++sort > ++eval echo '${P.git/objects/pack/pack-0cf5cb6afaa1bae36b8e61ca398dbe29a15bc74e.idx}' > ./test-lib.sh: line 697: ${P.git/objects/pack/pack-0cf5cb6afaa1bae36b8e61ca398dbe29a15bc74e.idx}: bad substitution > ++test_cmp expected actual > ++diff -u expected actual > --- expected 2019-01-09 01:53:45.000000000 +0000 > +++ actual 2019-01-09 01:53:45.000000000 +0000 > @@ -1,4 +0,0 @@ > -P1:24ee080366509364d04a138cd4e168dc4ff33354 > -P4:139d8b0cfe7e8970a8f3533835f90278d88de474 > -P5:23e0f02d822fa4bfe5ee63337ba5632cd7be208e > -P6:deeb289f1749972f1cd57c3b9f359ece2361f60a > error: last command exited with $?=1 > not ok 2 - git pack-redundant --all > > I'm not sure what's wrong with it, though. So, it appears that 'sed' in macOS doesn't understand the '\(idx\|pack\)' part of that regex. Turning that command into sed -e "s#^.git/objects/pack/pack-\($OID_REGEX\)\..*#\1#" out | \ makes it work even on macOS, but note that those 40 hexdigits are not actual OIDs but file content checksums, so using $OID_REGEX is not the right thing to do here (though I'm not sure what is supposed to be used instead, as $_x40 hardcodes the number of hexdigits). Alas, the test as a whole still fails with the following on macOS: ++diff -u expected actual --- expected 2019-01-09 15:54:49.000000000 +0000 +++ actual 2019-01-09 15:54:49.000000000 +0000 @@ -1,4 +1,4 @@ P1:24ee080366509364d04a138cd4e168dc4ff33354 -P4:139d8b0cfe7e8970a8f3533835f90278d88de474 +P3:0cf5cb6afaa1bae36b8e61ca398dbe29a15bc74e P5:23e0f02d822fa4bfe5ee63337ba5632cd7be208e -P6:deeb289f1749972f1cd57c3b9f359ece2361f60a +P7:4ecc1eb138516a26654cd4e3570b322c0820f170 error: last command exited with $?=1