first, write Foo.pm:
package Foo;
use Moose;
use namespace::clean;
no Moose;
1;
and test.t
use Test::More tests => 1;
use_ok 'Foo';
and run it:
[danjou@sylvia] $ prove test.t
test.t .. ok
All tests successful.
Files=1, Tests=1, 0 wallclock secs ( 0.05 usr 0.01 sys + 0.08 cusr 0.01 csys = 0.15 CPU)
Result: PASS
great. but, with Devel::Cover,
[danjou@sylvia] $ HARNESS_PERL_SWITCHES=-MDevel::Cover prove test.t
test.t .. 1/1
# Failed test 'use Foo;'
# at test.t line 2.
# Tried to use 'Foo'.
# Error: Can't use an undefined value as a symbol reference at /Users/danjou/perl5/lib/perl5/namespace/clean.pm line 170.
# Compilation failed in require at (eval 27)[/Users/danjou/perl5/lib/perl5/Test/More.pm:745] line 2.
# BEGIN failed--compilation aborted at (eval 27)[/Users/danjou/perl5/lib/perl5/Test/More.pm:745] line 2.
# Looks like you failed 1 test of 1.
test.t .. Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/1 subtests
Test Summary Report
- test.t (Wstat: 256 Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 1
Files=1, Tests=1, 2 wallclock secs ( 0.05 usr 0.01 sys + 1.08 cusr 0.05 csys = 1.19 CPU)
Result: FAIL
It fails!!!
update:
http://rt.cpan.org/Public/Bug/Display.html?id=45637> you can easily make the test pass by not explicitly inimporting the Moose keywords using ‘no Moose’ before namespace::clean gets a chance to do it. There’s really no point in doing that. «