t: adapt `test_copy_bytes()` to not use Perl

The `test_copy_bytes()` helper function copies up to N bytes from stdin
to stdout. This is implemented using Perl, but it can be trivially
adapted to instead use dd(1).

Refactor the helper accordingly, which allows a bunch of tests to pass
when Perl is not available.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
main
Patrick Steinhardt 2025-04-03 07:05:55 +02:00 committed by Junio C Hamano
parent 2df6710097
commit 01486b5de8
1 changed files with 1 additions and 11 deletions

View File

@ -1640,17 +1640,7 @@ test_match_signal () {

# Read up to "$1" bytes (or to EOF) from stdin and write them to stdout.
test_copy_bytes () {
perl -e '
my $len = $ARGV[1];
while ($len > 0) {
my $s;
my $nread = sysread(STDIN, $s, $len);
die "cannot read: $!" unless defined($nread);
last unless $nread;
print $s;
$len -= $nread;
}
' - "$1"
dd ibs=1 count="$1" 2>/dev/null
}

# run "$@" inside a non-git directory