On February 8, 2019 18:39, Junio C Hamano wrote: > randall.s.becker@xxxxxxxxxx writes: > > Replaced subtest 15 (CONTENT_LENGTH overflow ssite_t) use of /dev/zero > > with yes and a translation of its result to a stream of NULL. This is > > a more portable solution. > > > > Signed-off-by: Randall S. Becker <rsbecker@xxxxxxxxxxxxx> > > --- > > t/t5562-http-backend-content-length.sh | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/t/t5562-http-backend-content-length.sh > > b/t/t5562-http-backend-content-length.sh > > index 90d890d02..b8d1913e5 100755 > > --- a/t/t5562-http-backend-content-length.sh > > +++ b/t/t5562-http-backend-content-length.sh > > @@ -143,14 +143,14 @@ test_expect_success GZIP 'push gzipped empty' ' > > > > test_expect_success 'CONTENT_LENGTH overflow ssite_t' ' > > NOT_FIT_IN_SSIZE=$(ssize_b100dots) && > > - env \ > > + yes | tr "y" "\\0" | env \ > > I do not quite get this use of tr. The original feeds a stream of NULs out of > /dev/zero to the command; the yes-to-tr pipe instead feeds a stream of > alternating NUL and LF. That's why we're going to go with a generate_zero_bytes function per Peff. I'm working on a more comprehensive patch covering t5562, t5318, and test-lib-functions.sh that will (hopefully) be satisfactory and remove the dependency on /dev/zero and fixes the related new breakages in 2.21.0-rc0. The test case in t5318 is specific about wanting zero bytes although the test is just intending to generate a corrupt block that generates a different hash, so yes 'yes' might be sufficient, but I don't like randomness myself if we're taking two different tests being involved. My current intent is to add to test-lib-functions.sh, a method of generalizing blocks of zeros to a pipe: +# Generate an output of $1 bytes of all zeroes (NULs, not ASCII zeroes). +# If $1 is < 0, output forever or until the receiving pipe stops reading, whichever comes first. + generate_zero_bytes () { + perl -e ' if ($ARGV[0] < 0) { while (-1) { print "\0" } } else { print "\0" x $ARGV[0] }' "$@" + } And then fit that into the two tests, then submit as a patch. > Does the actual bytes fed to the consumer make any difference? If not, > perhaps we can use 'yes' as-is? > > > CONTENT_TYPE=application/x-git-upload-pack-request \ > > QUERY_STRING=/repo.git/git-upload-pack \ > > PATH_TRANSLATED="$PWD"/.git/git-upload-pack \ > > GIT_HTTP_EXPORT_ALL=TRUE \ > > REQUEST_METHOD=POST \ > > CONTENT_LENGTH="$NOT_FIT_IN_SSIZE" \ > > - git http-backend </dev/zero >/dev/null 2>err && > > + git http-backend >/dev/null 2>err && > > grep "fatal:.*CONTENT_LENGTH" err > > ' Regards, Randall