]> git.ipfire.org Git - thirdparty/git.git/blame - t/t5562/invoke-with-content-length.pl
Merge branch 'vd/fsck-submodule-url-test'
[thirdparty/git.git] / t / t5562 / invoke-with-content-length.pl
CommitLineData
d13a73e3 1use 5.008001;
6c213e86
MK
2use strict;
3use warnings;
4
5my $body_filename = $ARGV[0];
6my @command = @ARGV[1 .. $#ARGV];
7
8# read data
9my $body_size = -s $body_filename;
10$ENV{"CONTENT_LENGTH"} = $body_size;
11open(my $body_fh, "<", $body_filename) or die "Cannot open $body_filename: $!";
12my $body_data;
13defined read($body_fh, $body_data, $body_size) or die "Cannot read $body_filename: $!";
14close($body_fh);
15
6c213e86
MK
16# write data
17my $pid = open(my $out, "|-", @command);
18{
19 # disable buffering at $out
20 my $old_selected = select;
21 select $out;
22 $| = 1;
23 select $old_selected;
24}
25print $out $body_data or die "Cannot write data: $!";
26
e8f55568
JK
27$SIG{ALRM} = sub {
28 kill 'KILL', $pid;
6c213e86 29 die "Command did not exit after reading whole body";
e8f55568
JK
30};
31alarm 60;
32
33my $ret = waitpid($pid, 0);
34if ($ret != $pid) {
35 die "confusing return from waitpid: $ret";
6c213e86 36}