diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/scripts/features/output-sync | 12 | ||||
-rw-r--r-- | tests/scripts/features/temp_stdin | 13 | ||||
-rw-r--r-- | tests/test_driver.pl | 17 |
3 files changed, 22 insertions, 20 deletions
diff --git a/tests/scripts/features/output-sync b/tests/scripts/features/output-sync index 20004e78..a87df637 100644 --- a/tests/scripts/features/output-sync +++ b/tests/scripts/features/output-sync @@ -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); diff --git a/tests/scripts/features/temp_stdin b/tests/scripts/features/temp_stdin index d7dde709..fee32a90 100644 --- a/tests/scripts/features/temp_stdin +++ b/tests/scripts/features/temp_stdin @@ -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); diff --git a/tests/test_driver.pl b/tests/test_driver.pl index 38ec4587..38b848f2 100644 --- a/tests/test_driver.pl +++ b/tests/test_driver.pl @@ -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 |