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>
Patrick Steinhardt committed
Apr 3, 2025 at 07:05 UTC
01486b5de886af06c5bbfb097736ec97b86bacda
1 file changed
+1
-11
t/test-lib-functions.sh
+1
-11
@@ -1640,17 +1640,7 @@ test_match_signal () {
1640
1641
# Read up to "$1" bytes (or to EOF) from stdin and write them to stdout.
1642
test_copy_bytes () {
1643
- perl -e '
1644
- my $len = $ARGV[1];
1645
- while ($len > 0) {
1646
- my $s;
1647
- my $nread = sysread(STDIN, $s, $len);
1648
- die "cannot read: $!" unless defined($nread);
1649
- last unless $nread;
1650
- print $s;
1651
- $len -= $nread;
1652
- }
1653
- ' - "$1"
1643
+ dd ibs=1 count="$1" 2>/dev/null
1644
}
1645
1646
# run "$@" inside a non-git directory