diff options
author | Marc Hoersken <info@marc-hoersken.de> | 2021-08-17 21:16:41 +0200 |
---|---|---|
committer | Marc Hoersken <info@marc-hoersken.de> | 2021-08-18 20:59:36 +0200 |
commit | 5b1c2dd1db6465f4664becc9a8b686e4151fae68 (patch) | |
tree | e038209384d9d5a1a6e36ea7baa859998867f898 /tests | |
parent | ebefa3b9f0d0684bba83feb440376e641bf8193d (diff) | |
download | curl-5b1c2dd1db6465f4664becc9a8b686e4151fae68.tar.gz |
tests/*server.pl: flush output before executing subprocess
Also avoid shell processes staying around by using exec.
This is necessary to avoid output data being buffering
inside the process chain of Perl, Bash/Shell and our
test server binaries. On non-Windows systems the exec
will also make the subprocess replace the intermediate
shell, but on Windows it will at least bind the processes
together since there is no real fork or exec available.
See: https://cygwin.com/cygwin-ug-net/highlights.html
and: https://docs.microsoft.com/cpp/c-runtime-library/exec-wexec-functions
Ref: https://github.com/curl/curl/pull/7530#issuecomment-900949010
Reviewed-by: Daniel Stenberg
Reviewed-by: Jay Satiro
Closes #7530
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/httpserver.pl | 3 | ||||
-rwxr-xr-x | tests/rtspserver.pl | 3 | ||||
-rwxr-xr-x | tests/runtests.pl | 6 | ||||
-rwxr-xr-x | tests/secureserver.pl | 3 | ||||
-rw-r--r-- | tests/sshserver.pl | 3 | ||||
-rwxr-xr-x | tests/tftpserver.pl | 3 |
6 files changed, 18 insertions, 3 deletions
diff --git a/tests/httpserver.pl b/tests/httpserver.pl index fbdb6752c..9c50e02d5 100755 --- a/tests/httpserver.pl +++ b/tests/httpserver.pl @@ -152,4 +152,5 @@ if($verbose) { print STDERR "RUN: server/sws".exe_ext('SRV')." $flags\n"; } -exec("server/sws".exe_ext('SRV')." $flags"); +$| = 1; +exec("exec server/sws".exe_ext('SRV')." $flags"); diff --git a/tests/rtspserver.pl b/tests/rtspserver.pl index bb4bef40d..471bcbd5e 100755 --- a/tests/rtspserver.pl +++ b/tests/rtspserver.pl @@ -119,4 +119,5 @@ $flags .= "--pidfile \"$pidfile\" ". "--logfile \"$logfile\" "; $flags .= "--ipv$ipvnum --port $port --srcdir \"$srcdir\""; -exec("server/rtspd".exe_ext('SRV')." $flags"); +$| = 1; +exec("exec server/rtspd".exe_ext('SRV')." $flags"); diff --git a/tests/runtests.pl b/tests/runtests.pl index 30ae0b349..577f23467 100755 --- a/tests/runtests.pl +++ b/tests/runtests.pl @@ -496,6 +496,9 @@ sub startnew { if(0 == $child) { # Here we are the child. Run the given command. + # Flush output. + $| = 1; + # Put an "exec" in front of the command so that the child process # keeps this child's process ID. exec("exec $cmd") || die "Can't exec() $cmd: $!"; @@ -4108,6 +4111,9 @@ sub singletest { close(GDBCMD); } + # Flush output. + $| = 1; + # timestamp starting of test command $timetoolini{$testnum} = Time::HiRes::time(); diff --git a/tests/secureserver.pl b/tests/secureserver.pl index be1de0566..fb1c4df82 100755 --- a/tests/secureserver.pl +++ b/tests/secureserver.pl @@ -341,6 +341,9 @@ if($tstunnel_windows) { close(OUT); } + # Flush output. + $| = 1; + # Put an "exec" in front of the command so that the child process # keeps this child's process ID by being tied to the spawned shell. exec("exec $cmd") || die "Can't exec() $cmd: $!"; diff --git a/tests/sshserver.pl b/tests/sshserver.pl index 944193907..90281eb40 100644 --- a/tests/sshserver.pl +++ b/tests/sshserver.pl @@ -1122,6 +1122,9 @@ if ($sshdid =~ /OpenSSH-Windows/) { close(OUT); } + # Flush output. + $| = 1; + # Put an "exec" in front of the command so that the child process # keeps this child's process ID by being tied to the spawned shell. exec("exec $cmd") || die "Can't exec() $cmd: $!"; diff --git a/tests/tftpserver.pl b/tests/tftpserver.pl index f9fbbe9bc..d582b5fb6 100755 --- a/tests/tftpserver.pl +++ b/tests/tftpserver.pl @@ -120,4 +120,5 @@ $flags .= "--pidfile \"$pidfile\" ". "--logfile \"$logfile\" "; $flags .= "--ipv$ipvnum --port $port --srcdir \"$srcdir\""; -exec("server/tftpd".exe_ext('SRV')." $flags"); +$| = 1; +exec("exec server/tftpd".exe_ext('SRV')." $flags"); |