our
@EXPORT
=
qw( set_logger log_is log_like capture_stderr )
;
my
$Test
= Test::Builder->new();
my
$logger
;
sub
set_logger {
$logger
=
shift
}
sub
log_is (&$$) {
my
(
$sub
,
$value
,
$message
) =
@_
;
my
$collector
=
''
;
open
my
$fh
,
'>'
, \
$collector
;
$logger
->fh(
$fh
);
$sub
->(
$logger
);
close
$fh
;
$Test
->is_eq(
$collector
,
$value
,
$message
);
}
sub
log_like (&$$) {
my
(
$sub
,
$regex
,
$message
) =
@_
;
my
$collector
=
''
;
open
my
$fh
,
'>'
, \
$collector
;
$logger
->fh(
$fh
);
$sub
->(
$logger
);
close
$fh
;
$Test
->like(
$collector
,
$regex
,
$message
);
}
sub
capture_stderr (&) {
local
*STDERR
;
close
STDERR;
my
$stderr
=
''
;
open
STDERR,
'>'
, \
$stderr
;
$_
[0]->();
close
STDERR;
return
$stderr
;
}
1;