@ -2186,15 +2186,9 @@ If this regular expression is set, matches it with the output generated.
= item log_like = > [ qr/required message/ ]
If given , it must be an array reference containing a list of regular
expressions that must match against the server log , using
C <Test::More::like()> .
= item log_unlike = > [ qr/prohibited message/ ]
If given , it must be an array reference containing a list of regular
expressions that must NOT match against the server log . They will be
passed to C <Test::More::unlike()> .
See C <log_check(...)> .
= back
@ -2215,16 +2209,6 @@ sub connect_ok
$ sql = "SELECT \$\$connected with $connstr\$\$" ;
}
my ( @ log_like , @ log_unlike ) ;
if ( defined ( $ params { log_like } ) )
{
@ log_like = @ { $ params { log_like } } ;
}
if ( defined ( $ params { log_unlike } ) )
{
@ log_unlike = @ { $ params { log_unlike } } ;
}
my $ log_location = - s $ self - > logfile ;
# Never prompt for a password, any callers of this routine should
@ -2245,20 +2229,7 @@ sub connect_ok
is ( $ stderr , "" , "$test_name: no stderr" ) ;
if ( @ log_like or @ log_unlike )
{
my $ log_contents =
PostgreSQL::Test::Utils:: slurp_file ( $ self - > logfile , $ log_location ) ;
while ( my $ regex = shift @ log_like )
{
like ( $ log_contents , $ regex , "$test_name: log matches" ) ;
}
while ( my $ regex = shift @ log_unlike )
{
unlike ( $ log_contents , $ regex , "$test_name: log does not match" ) ;
}
}
$ self - > log_check ( $ test_name , $ log_location , % params ) ;
}
= pod
@ -2278,7 +2249,7 @@ If this regular expression is set, matches it with the output generated.
= item log_unlike = > [ qr/prohibited message/ ]
See C <connect_ok(...)> , above .
See C <log_check(...)> .
= back
@ -2289,16 +2260,6 @@ sub connect_fails
local $ Test:: Builder:: Level = $ Test:: Builder:: Level + 1 ;
my ( $ self , $ connstr , $ test_name , % params ) = @ _ ;
my ( @ log_like , @ log_unlike ) ;
if ( defined ( $ params { log_like } ) )
{
@ log_like = @ { $ params { log_like } } ;
}
if ( defined ( $ params { log_unlike } ) )
{
@ log_unlike = @ { $ params { log_unlike } } ;
}
my $ log_location = - s $ self - > logfile ;
# Never prompt for a password, any callers of this routine should
@ -2316,20 +2277,7 @@ sub connect_fails
like ( $ stderr , $ params { expected_stderr } , "$test_name: matches" ) ;
}
if ( @ log_like or @ log_unlike )
{
my $ log_contents =
PostgreSQL::Test::Utils:: slurp_file ( $ self - > logfile , $ log_location ) ;
while ( my $ regex = shift @ log_like )
{
like ( $ log_contents , $ regex , "$test_name: log matches" ) ;
}
while ( my $ regex = shift @ log_unlike )
{
unlike ( $ log_contents , $ regex , "$test_name: log does not match" ) ;
}
}
$ self - > log_check ( $ test_name , $ log_location , % params ) ;
}
= pod
@ -2535,6 +2483,67 @@ sub log_content
return PostgreSQL::Test::Utils:: slurp_file ( $ self - > logfile ) ;
}
= pod
= item $ node - > log_check ( $ offset , $ test_name , % parameters )
Check contents of server logs .
= over
= item $ test_name
Name of test for error messages .
= item $ offset
Offset of the log file .
= item log_like = > [ qr/required message/ ]
If given , it must be an array reference containing a list of regular
expressions that must match against the server log , using
C <Test::More::like()> .
= item log_unlike = > [ qr/prohibited message/ ]
If given , it must be an array reference containing a list of regular
expressions that must NOT match against the server log . They will be
passed to C <Test::More::unlike()> .
= back
= cut
sub log_check
{
my ( $ self , $ test_name , $ offset , % params ) = @ _ ;
my ( @ log_like , @ log_unlike ) ;
if ( defined ( $ params { log_like } ) )
{
@ log_like = @ { $ params { log_like } } ;
}
if ( defined ( $ params { log_unlike } ) )
{
@ log_unlike = @ { $ params { log_unlike } } ;
}
if ( @ log_like or @ log_unlike )
{
my $ log_contents =
PostgreSQL::Test::Utils:: slurp_file ( $ self - > logfile , $ offset ) ;
while ( my $ regex = shift @ log_like )
{
like ( $ log_contents , $ regex , "$test_name: log matches" ) ;
}
while ( my $ regex = shift @ log_unlike )
{
unlike ( $ log_contents , $ regex , "$test_name: log does not match" ) ;
}
}
}
= pod