#!/usr/bin/perl
require
'setup_common.pl'
;
my
$class
=
'Module::Release'
;
subtest
setup
=>
sub
{
use_ok(
$class
);
can_ok(
$class
,
'new'
);
};
my
@fh_subs
=
qw(
output_fh
null_fh
debug_fh
)
;
my
@toggle_subs
=
map
{
$_
,
"turn_${_}_on"
,
"turn_${_}_off"
}
qw(quiet debug)
;
my
@internal
=
qw(
_print
_dashes
_debug
_die
_warn
)
;
my
$release
=
$class
->new;
isa_ok(
$release
,
$class
);
can_ok(
$release
,
@fh_subs
,
@toggle_subs
,
@internal
);
$release
->turn_quiet_on;
$release
->turn_debug_on;
my
@test_pairs
=
map
{ [
"turn_quiet_$_->[0]"
,
"turn_debug_$_->[1]"
] }
(
[
qw(off off)
],
[
qw(on off)
],
[
qw(off on)
],
[
qw( on on)
]
);
foreach
my
$pair
(
@test_pairs
)
{
$release
->
$_
()
for
@$pair
;
foreach
my
$sub
(
@fh_subs
)
{
ok(
defined
$release
->
$sub
(),
"$sub returns something that is defined"
);
can_ok(
$release
->
$sub
(),
'print'
);
my
$fh
=
$release
->
$sub
();
my
$class
=
ref
$fh
;
{
no
warnings;
ok(
eval
{
print
{
$release
->
$sub
() }
''
; 1},
"print for $sub seems to work fine"
);
}
}
}
{
$release
->turn_quiet_on;
isa_ok(
$release
->null_fh,
'IO::Null'
);
isa_ok(
$release
->output_fh,
'IO::Null'
);
}
{
$release
->turn_debug_off;
isa_ok(
$release
->null_fh,
'IO::Null'
);
isa_ok(
$release
->debug_fh,
'IO::Null'
);
}
{
$release
->turn_quiet_off;
my
$old_output
=
$release
->{output_fh};
$release
->{output_fh} =
undef
;
can_ok(
$release
->output_fh,
'print'
);
$release
->{output_fh} =
$old_output
;
}
{
$release
->turn_debug_on;
$release
->{debug_fh} =
undef
;
can_ok(
$release
->debug_fh,
'print'
);
}
{
$release
->turn_quiet_off;
can_ok(
$release
->output_fh,
'print'
);
stdout_is {
$release
->_print(
'Buster'
) }
'Buster'
;
}
{
$release
->turn_debug_on;
can_ok(
$release
->debug_fh,
'print'
);
stderr_is {
$release
->_debug(
'Buster'
) }
'Buster'
;
}
{
$release
->turn_quiet_on;
can_ok(
$release
->output_fh,
'print'
);
stdout_is {
$release
->_print(
'Buster'
) }
''
;
stderr_is {
$release
->_warn(
'Mimi'
) }
''
;
}
{
$release
->turn_debug_off;
can_ok(
$release
->debug_fh,
'print'
);
stderr_is {
$release
->_debug(
'Buster'
) }
''
;
}
{
$release
->turn_quiet_off;
stderr_like {
$release
->_warn(
'Mimi'
) }
qr/\QMimi at $0 line \E\d+/
;
}
like(
$release
->_dashes,
qr/-{2,}/
,
"There are dashes from _dashes"
);