From 51d3d67a18705467fa51bb66805456a2502505f1 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Wed, 21 Oct 2009 00:02:20 +0200 Subject: [PATCH] capture actual test warnings Compare expected `use warnings` output to warnings produced by similar code instead of hardcoding text. It doesn't really matter what is said, as long it's the same using plp. Fixes (so far and afaik) a slight change introduced by Perl v5.11.0 in "Useless use of a constant in void context" (adding details about which constant). --- t/50-cgi.t | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/t/50-cgi.t b/t/50-cgi.t index d30bff2..d29fcd0 100644 --- a/t/50-cgi.t +++ b/t/50-cgi.t @@ -50,6 +50,16 @@ sub plp_is { is($output, $expect, $test); } +sub getwarning { + # captures the first warning produced by the given code string + my ($code, $line, $file) = @_; + + local $SIG{__WARN__} = sub { die @_ }; + # warnings module runs at BEGIN, so we need to use icky expression evals + eval qq(# line $line "$file"\n$code; return); + return $@; +}; + %ENV = ( REQUEST_METHOD => 'GET', REQUEST_URI => "/$testfile/test/123", @@ -104,11 +114,10 @@ rename "$base/$testfile", "$base/$testfile.inc"; plp_is('include', "<($testfile.inc)> <: include '$testfile.inc'", "$HEAD\nok ok"); unlink "$base/$testfile.inc"; +my $SYNTAXERR = getwarning("q\cq\n\cq; syntax(error", 1, $testfile); plp_is('fatal error', "runtime\n<: syntax(error :>\nruntime", <Debug information:
syntax error at $testfile line 2, at EOF - (Might be a runaway multi-line \cq\cq string starting on line 1) - +
Debug information:
$SYNTAXERR
TEST SKIP: { @@ -120,6 +129,8 @@ if (open my $dummy, "<", $INCFILE) { # like PLP::source will } my $INCWARN = qq{Can't open "$INCFILE" ($!)}; +my $VOIDWARN = getwarning('42', 2, $testfile); + plp_is('warnings', split /\n\n/, < 2<: 42 :> @@ -129,8 +140,7 @@ plp_is('warnings', split /\n\n/, <