パルカワ2

PerlとRubyとイチャラブ

わかったようでわかってない。2

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