tests: fix and add lint for non-portable head -c N
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Fri, 24 Aug 2018 15:20:11 +0000 (15:20 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Aug 2018 18:31:18 +0000 (11:31 -0700)
commit2a59a6ef2066c786b69253e148cccdc92cfdb434
tree0ae01c4fd91593653e05bd7bff8088ea5fd5696e
parent29d9e3e2c47dd4b5053b0a98c891878d398463e3
tests: fix and add lint for non-portable head -c N

The "head -c BYTES" option is non-portable (not in POSIX[1]). Change
such invocations to use the test_copy_bytes wrapper added in
48860819e8 ("t9300: factor out portable "head -c" replacement",
2016-06-30).

This fixes a test added in 9d2e330b17 ("ewah_read_mmap: bounds-check
mmap reads", 2018-06-14), which has been breaking
t5310-pack-bitmaps.sh on OpenBSD since 2.18.0. The OpenBSD ports
already have a similar workaround after their upgrade to 2.18.0[2].

I have not tested this on IRIX, but according to 4de0bbd898 ("t9300:
use perl "head -c" clone in place of "dd bs=1 count=16000" kluge",
2010-12-13) this invocation would have broken things there too.

Also, change a valgrind-specific codepath in test-lib.sh to use this
wrapper. Given where valgrind runs I don't think this would ever
become a portability issue in practice, but it's easier to just use
the wrapper than introduce some exception for the "make test-lint"
check being added here.

1. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/head.html
2. https://github.com/openbsd/ports/commit/08d5d82eaefe5cf2f125ecc0c6a57df9cf91350c#diff-f7d3c4fabeed1691620d608f1534f5e5

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/check-non-portable-shell.pl
t/t5310-pack-bitmaps.sh
t/test-lib.sh