mirror of
https://github.com/mirror/make.git
synced 2025-03-11 02:00:35 +08:00
* tests/test_driver.pl: Convert z/OS answers for regex output
Allow z/OS customizations to apply to regex output matching. * tests/scripts/features/output-sync: Use a regex for Terminated. * tests/scripts/features/temp_stdin: Ditto.
This commit is contained in:
parent
a8890796a4
commit
d2bf740e77
@ -353,15 +353,15 @@ s/\r?\n//g;
|
||||
if (/^[0-9]+$/) {
|
||||
use POSIX ();
|
||||
# SV 63157.
|
||||
# Test that make removes temporary files, even when a signal is received.
|
||||
# The general test_driver postprocessing will ensure the temporary file used
|
||||
# to synchronize output and the jobserver fifo are both removed.
|
||||
# sleep is needed to let make write its "... Terminated" message to the log
|
||||
# file.
|
||||
# Test that make removes temporary files, even when a signal is received. The
|
||||
# general test_driver postprocessing will ensure the temporary file used to
|
||||
# synchronize output and the jobserver fifo are both removed. sleep is needed
|
||||
# to let make write its "... Terminated" message to the log file. Must use
|
||||
# REGEX because some systems (MacOS) add extra text after Terminated.
|
||||
run_make_test(q!
|
||||
pid:=$(shell echo $$PPID)
|
||||
all:; @#HELPER# -q term $(pid) sleep 10
|
||||
!, '-O -j2', '#MAKE#: *** [#MAKEFILE#:3: all] Terminated', POSIX::SIGTERM);
|
||||
!, '-O -j2', '/#MAKE#: \*\*\* \[#MAKEFILE#:3: all] Terminated/', POSIX::SIGTERM);
|
||||
}
|
||||
unlink($fout);
|
||||
|
||||
|
@ -58,12 +58,11 @@ use POSIX ();
|
||||
|
||||
# sv 63157.
|
||||
# Test that make removes the temporary file which holds make code from stdin,
|
||||
# even when a signal is received.
|
||||
# include bye.mk and bye.mk: rule is needed to cause make to keep the temporary
|
||||
# file for re-exec. Without re-exec make will remove the file before the signal
|
||||
# arrives.
|
||||
# sleep is needed to let make write its "... Terminated" message to the log
|
||||
# file.
|
||||
# even when a signal is received. include bye.mk and bye.mk: rule is needed
|
||||
# to cause make to keep the temporary file for re-exec. Without re-exec make
|
||||
# will remove the file before the signal arrives. sleep is needed to let make
|
||||
# write its "... Terminated" message to the log file. Must use REGEX because
|
||||
# some systems (MacOS) add extra text after Terminated.
|
||||
&utouch(-600, 'bye.mk');
|
||||
close(STDIN);
|
||||
open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!";
|
||||
@ -75,7 +74,7 @@ all:;
|
||||
bye.mk: force; @#HELPER# -q term $(pid) sleep 10
|
||||
force:
|
||||
!,
|
||||
'-f-', '#MAKE#: *** [#MAKEFILE#:5: bye.mk] Terminated', POSIX::SIGTERM);
|
||||
'-f-', '/#MAKE#: \*\*\* \[#MAKEFILE#:5: bye.mk] Terminated/', POSIX::SIGTERM);
|
||||
}
|
||||
unlink($fout);
|
||||
|
||||
|
@ -908,9 +908,9 @@ sub compare_answer_vms
|
||||
return 0;
|
||||
}
|
||||
|
||||
sub compare_answer_zos
|
||||
sub convert_answer_zos
|
||||
{
|
||||
my ($kgo, $log) = @_;
|
||||
my ($log) = @_;
|
||||
|
||||
# z/OS emits "Error 143" or "SIGTERM" instead of terminated
|
||||
$log =~ s/Error 143/Terminated/gm;
|
||||
@ -920,7 +920,7 @@ sub compare_answer_zos
|
||||
$log =~ s/EDC5129I No such file or directory\./No such file or directory/gm;
|
||||
$log =~ s/FSUM7351 not found/not found/gm;
|
||||
|
||||
return $log eq $kgo;
|
||||
return $log;
|
||||
}
|
||||
|
||||
sub compare_answer
|
||||
@ -939,10 +939,16 @@ sub compare_answer
|
||||
$log =~ s,\r\n,\n,gs;
|
||||
return 1 if ($log eq $kgo);
|
||||
|
||||
# Keep these in case it's a regex
|
||||
# Keep the originals in case it's a regex
|
||||
$mkgo = $kgo;
|
||||
$mlog = $log;
|
||||
|
||||
# z/OS has quirky outputs
|
||||
if ($osname eq 'os390') {
|
||||
$mlog = convert_answer_zos($mlog);
|
||||
return 1 if ($mlog eq $kgo);
|
||||
}
|
||||
|
||||
# Some versions of Perl on Windows use /c instead of C:
|
||||
$mkgo =~ s,\b([A-Z]):,/\L$1,g;
|
||||
$mlog =~ s,\b([A-Z]):,/\L$1,g;
|
||||
@ -956,9 +962,6 @@ sub compare_answer
|
||||
# VMS is a whole thing...
|
||||
return 1 if ($osname eq 'VMS' && compare_answer_vms($kgo, $log));
|
||||
|
||||
# z/OS has its own quirks
|
||||
return 1 if ($osname eq 'os390' && compare_answer_zos($kgo, $log));
|
||||
|
||||
# See if the answer might be a regex.
|
||||
if ($kgo =~ m,^/(.+)/$,) {
|
||||
# Check the regex against both the original and modified strings
|
||||
|
Loading…
Reference in New Issue
Block a user