ヤミRoot VoidGate
User / IP
:
216.73.216.2
Host / Server
:
146.88.233.70 / dev.loger.cm
System
:
Linux hybrid1120.fr.ns.planethoster.net 3.10.0-957.21.2.el7.x86_64 #1 SMP Wed Jun 5 14:26:44 UTC 2019 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
itrave
/
.cpanm
/
work
/
1568630680.21759
/
Moo-2.003004
/
t
/
Viewing: accessor-default.t
use Moo::_strictures; use Test::More; use Test::Fatal; my $c_ran; { package Foo; use Sub::Quote; use Moo; has one => (is => 'ro', lazy => 1, default => quote_sub q{ {} }); has two => (is => 'ro', lazy => 1, builder => '_build_two'); sub _build_two { {} } has three => (is => 'ro', default => quote_sub q{ {} }); has four => (is => 'ro', builder => '_build_four'); sub _build_four { {} } has five => (is => 'ro', init_arg => undef, default => sub { {} }); has six => (is => 'ro', builder => 1); sub _build_six { {} } has seven => (is => 'ro', required => 1, default => quote_sub q{ {} }); has eight => (is => 'ro', builder => '_build_eight', coerce => sub { $c_ran = 1; $_[0] }); sub _build_eight { {} } has nine => (is => 'lazy', coerce => sub { $c_ran = 1; $_[0] }); sub _build_nine { {} } has ten => (is => 'lazy', default => 5 ); has eleven => (is => 'ro', default => 5 ); has twelve => (is => 'lazy', default => 0 ); has thirteen => (is => 'ro', default => 0 ); has fourteen => (is => 'ro', required => 1, builder => '_build_fourteen'); sub _build_fourteen { {} } has fifteen => (is => 'lazy', default => undef); # DIE handler was leaking into defaults when coercion is on. has default_with_coerce => ( is => 'rw', coerce => sub { return $_[0] }, default => sub { eval { die "blah\n" }; return $@; } ); has default_no_coerce => ( is => 'rw', default => sub { eval { die "blah\n" }; return $@; } ); } sub check { my ($attr, @h) = @_; is_deeply($h[$_], {}, "${attr}: empty hashref \$h[$_]") for 0..1; isnt($h[0],$h[1], "${attr}: not the same hashref"); } check one => map Foo->new->one, 1..2; check two => map Foo->new->two, 1..2; check three => map Foo->new->{three}, 1..2; check four => map Foo->new->{four}, 1..2; check five => map Foo->new->{five}, 1..2; check six => map Foo->new->{six}, 1..2; check seven => map Foo->new->{seven}, 1..2; check fourteen => map Foo->new->{fourteen}, 1..2; check eight => map Foo->new->{eight}, 1..2; ok($c_ran, 'coerce defaults'); $c_ran = 0; check nine => map Foo->new->nine, 1..2; ok($c_ran, 'coerce lazy default'); is(Foo->new->ten, 5, 'non-ref default'); is(Foo->new->eleven, 5, 'eager non-ref default'); is(Foo->new->twelve, 0, 'false non-ref default'); is(Foo->new->thirteen, 0, 'eager false non-ref default'); my $foo = Foo->new; is($foo->fifteen, undef, 'undef default'); ok(exists $foo->{fifteen}, 'undef default is stored'); is( Foo->new->default_with_coerce, "blah\n", "exceptions in defaults not modified with coerce" ); is( Foo->new->default_no_coerce, "blah\n", "exceptions in defaults not modified without coerce" ); { package Bar; use Moo; has required_false_default => (is => 'ro', required => 1, default => 0); ::is ::exception { has required_is_lazy_no_init_arg => ( is => 'lazy', required => 1, init_arg => undef, ); }, undef, 'is => lazy satisfies requires'; } is exception { Bar->new }, undef, 'required attributes with false defaults work'; done_testing;
Coded With 💗 by
0x6ick