tokuhiromさんが、原因を教えてくれた。
Re: わかったようでわかってない。 - tokuhirom's blog.
TAP::Harnessのコード読むところから始めたい。
こういう感じの事がやりたかっただけでござる。
overloadしても改行がないとダメでござる。
package MyApp::Exception; use strict; use warnings; use overload q[""] => \&to_string, fallback => 1; sub new { my ($class, %args) = @_; bless \%args, $class; } sub throw { my ($class, %args) = @_; my ($pkg, $file, $line) = caller(0); die $class->new( code => $args{code} || 500, message => $args{message} || 'Died', file => $file, line => $line, ); } sub message { shift->{message} } sub file { shift->{file} } sub line { shift->{line} } sub to_string { my ($self) = @_; sprintf "%s at %s line %d.\n", $self->message, $self->file, $self->line; } 1;
use strict; use warnings; use utf8; use Test::More; use MyApp::Exception; MyApp::Exception->throw( code => 500, message => 'KUSO', ); done_testing;
$ prove t/01_exception.t [00:21:13] t/01_exception.t .. KUSO at t/01_exception.t line 7. [00:21:13] t/01_exception.t .. Dubious, test returned 255 (wstat 65280, 0xff00) No subtests run [00:21:13] Test Summary Report ------------------- t/01_exception.t (Wstat: 65280 Tests: 0 Failed: 0) Non-zero exit status: 255 Parse errors: No plan found in TAP output Files=1, Tests=0, 0 wallclock secs ( 0.03 usr 0.01 sys + 0.05 cusr 0.00 csys = 0.09 CPU) Result: FAIL