Merge mo-cleanup -r520..524.

This commit is contained in:
Daniel Nichter
2012-12-24 14:41:20 -07:00
parent 5b12357035
commit 861cc8fd96
21 changed files with 762 additions and 57 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
package Bar;
use Mo;
use Lmo;
extends 'Foo';
1;
+1 -1
View File
@@ -1,5 +1,5 @@
package Boo;
use Mo;
use Lmo;
has 'buff';
+1 -1
View File
@@ -1,5 +1,5 @@
package Foo;
use Mo;
use Lmo;
has 'stuff';
+6 -6
View File
@@ -14,31 +14,31 @@ use Test::More;
$main::count = 1;
package Foo;
use Mo 'build';
use Lmo 'build';
has 'foo' => (is => 'rw');
sub BUILD {
my $self = shift;
::is_deeply(\@_, [qw(stuff 1)], "Foo's BUILD doesn't get the class name");
::is_deeply([sort @_], [sort qw(stuff 1)], "Foo's BUILD doesn't get the class name");
$self->foo($main::count++);
}
package Bar;
use Mo;
use Lmo;
extends 'Foo';
has 'bar' => (is => 'rw');
package Baz;
use Mo;
use Lmo;
extends 'Bar';
has 'baz' => (is => 'rw');
sub BUILD {
my $self = shift;
::is_deeply(\@_, [qw(stuff 1)], "Baz's BUILD doesn't get the class name");
::is_deeply([sort @_], [sort qw(stuff 1)], "Baz's BUILD doesn't get the class name");
$self->baz($main::count++);
}
package Gorch;
use Mo;
use Lmo;
extends 'Baz';
has 'gorch' => (is => 'rw');
@@ -15,13 +15,13 @@ $main::count = 0;
{
package Nothing;
use Mo;
use Lmo;
has nothing_special => ( is => 'rw' );
}
ok(Nothing->can("BUILDARGS"), "Every class automatically gets buildargs");
package Foo;
use Mo;
use Lmo;
has 'foo' => (is => 'rw');
sub BUILDARGS {
my $class = shift;
@@ -30,12 +30,12 @@ sub BUILDARGS {
}
package Bar;
use Mo;
use Lmo;
extends 'Foo';
has 'bar' => (is => 'rw');
package Baz;
use Mo;
use Lmo;
extends 'Bar';
has 'baz' => (is => 'rw');
sub BUILDARGS {
@@ -45,7 +45,7 @@ sub BUILDARGS {
}
package Gorch;
use Mo;
use Lmo;
extends 'Baz';
has 'gorch' => (is => 'rw');
@@ -53,7 +53,7 @@ package main;
$main::count = 0;
my $g = Foo->new;
is $main::count, 1, "A class with no explicit parent inherits SUPER::BUILDARGS from Mo::Object";
is $main::count, 1, "A class with no explicit parent inherits SUPER::BUILDARGS from Lmo::Object";
$main::count = 0;
$g = Gorch->new;
+1 -1
View File
@@ -12,7 +12,7 @@ use English qw(-no_match_vars);
use Test::More;
package Foo::coerce;
use Mo;
use Lmo;
has 'stuff' => (coerce => sub { uc $_[0] });
+1 -1
View File
@@ -11,7 +11,7 @@ use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More;
use lib "$ENV{PERCONA_TOOLKIT_BRANCH}/t/lib/Mo";
use lib "$ENV{PERCONA_TOOLKIT_BRANCH}/t/lib/Lmo";
use Bar;
my $b = Bar->new;
+16 -16
View File
@@ -21,14 +21,14 @@ use Test::More;
{
package Foo;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
has 'bar' => (is => 'rw', default => sub { 10 });
sub baz { 42 }
package Bar;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
has 'foo' => (
is => 'rw',
@@ -99,13 +99,13 @@ is($bar->foo_bar, 20, '... correctly curried a single argument');
{
package Engine;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
sub go { 'Engine::go' }
sub stop { 'Engine::stop' }
package Car;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
has 'engine' => (
is => 'rw',
@@ -137,14 +137,14 @@ is($car->stop, 'Engine::stop', '... got the right value from ->stop');
{
package Baz;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
sub foo { 'Baz::foo' }
sub bar { 'Baz::bar' }
sub boo { 'Baz::boo' }
package Baz::Proxy1;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
has 'baz' => (
is => 'ro',
@@ -154,7 +154,7 @@ is($car->stop, 'Engine::stop', '... got the right value from ->stop');
);
package Baz::Proxy2;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
has 'baz' => (
is => 'ro',
@@ -164,7 +164,7 @@ is($car->stop, 'Engine::stop', '... got the right value from ->stop');
);
package Baz::Proxy3;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
has 'baz' => (
is => 'ro',
@@ -228,14 +228,14 @@ is($car->stop, 'Engine::stop', '... got the right value from ->stop');
requires 'bar';
package Foo::Baz;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
sub foo { 'Foo::Baz::FOO' }
sub bar { 'Foo::Baz::BAR' }
sub baz { 'Foo::Baz::BAZ' }
package Foo::Thing;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
has 'thing' => (
is => 'rw',
@@ -244,7 +244,7 @@ is($car->stop, 'Engine::stop', '... got the right value from ->stop');
);
package Foo::OtherThing;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
use Moose::Util::TypeConstraints;
has 'other_thing' => (
@@ -288,7 +288,7 @@ is($car->stop, 'Engine::stop', '... got the right value from ->stop');
{
package Foo::Autoloaded;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
sub AUTOLOAD {
my $self = shift;
@@ -304,7 +304,7 @@ is($car->stop, 'Engine::stop', '... got the right value from ->stop');
}
package Bar::Autoloaded;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
has 'foo' => (
is => 'rw',
@@ -313,7 +313,7 @@ is($car->stop, 'Engine::stop', '... got the right value from ->stop');
);
package Baz::Autoloaded;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
has 'foo' => (
is => 'rw',
@@ -322,7 +322,7 @@ is($car->stop, 'Engine::stop', '... got the right value from ->stop');
);
package Goorch::Autoloaded;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
eval {
has 'foo' => (
@@ -447,7 +447,7 @@ is($car->stop, 'Engine::stop', '... got the right value from ->stop');
{
package Delegator;
use Mo qw(is required handles default builder);
use Lmo qw(is required handles default builder);
sub full { 1 }
sub stub;
+2 -2
View File
@@ -15,7 +15,7 @@ use Test::More;
{
package Foo;
use Mo qw( is init_arg );
use Lmo qw( is init_arg );
eval {
has 'foo' => (
@@ -64,7 +64,7 @@ use Test::More;
{
package Foo2;
use Mo qw( is init_arg clearer default );
use Lmo qw( is init_arg clearer default );
my $counter;
eval {
+1 -1
View File
@@ -12,7 +12,7 @@ use English qw(-no_match_vars);
use Test::More;
package Foo::is;
use Mo qw(is);
use Lmo qw(is);
has 'stuff' => (is => 'ro');
+3 -3
View File
@@ -29,7 +29,7 @@ sub lives_ok (&;$) {
}
package Foo::isa;
use Mo qw(isa);
use Lmo qw(isa);
my @types = qw(Bool Num Int Str ArrayRef CodeRef HashRef RegexpRef);
my @refs = ([], sub { }, {}, qr( ));
@@ -191,11 +191,11 @@ my $thisperl = $^X;
if ($^O ne 'VMS')
{$thisperl .= $Config{_exe} unless $thisperl =~ m/$Config{_exe}$/i;}
my $pm_test = "$PerconaTest::trunk/t/lib/Mo/isa_subtest.pm";
my $pm_test = "$PerconaTest::trunk/t/lib/Lmo/isa_subtest.pm";
ok(
scalar(IPC::Cmd::run(command => [$thisperl, $pm_test])),
"Mo types work with Scalar::Util::PP",
"Lmo types work with Scalar::Util::PP",
);
done_testing;
@@ -16,7 +16,7 @@ use warnings;
{
package isa_subtest;
use Mo;
use Lmo;
has attr => (
is => 'rw',
+83
View File
@@ -0,0 +1,83 @@
#!/usr/bin/perl
BEGIN {
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
};
use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More;
sub throws_ok (&;$) {
my ( $code, $pat, $msg ) = @_;
eval { $code->(); };
like ( $EVAL_ERROR, $pat, $msg );
}
{
package Metatest;
use Lmo;
has stuff => ( is => 'rw', required => 1 );
has init_stuff1 => ( is => 'rw', init_arg => undef );
has init_stuff2 => ( is => 'rw', init_arg => 'fancy_name' );
}
{
package Metatest::child;
use Lmo;
extends 'Metatest';
has more_stuff => ( is => 'rw' );
}
my $obj = Metatest->new( stuff => 100 );
can_ok($obj, 'meta');
my $meta = $obj->meta();
is_deeply(
[ sort $meta->attributes ],
[ sort qw(stuff init_stuff1 init_stuff2) ],
"->attributes works"
);
is_deeply(
[ sort $meta->attributes_for_new ],
[ sort qw(stuff fancy_name) ],
"->attributes_for_new works"
);
# Do these BEFORE initializing ::extends
my $meta2 = Metatest::child->meta();
is_deeply(
[ sort $meta2->attributes ],
[ sort qw(stuff init_stuff1 init_stuff2 more_stuff) ],
"->attributes works on a child class"
);
is_deeply(
[ sort $meta2->attributes_for_new ],
[ sort qw(stuff fancy_name more_stuff) ],
"->attributes_for_new works in a child class"
);
my $meta3 = Metatest::child->new(stuff => 10)->meta();
is_deeply(
[ sort $meta3->attributes ],
[ sort qw(stuff init_stuff1 init_stuff2 more_stuff) ],
"->attributes works on an initialized child class"
);
is_deeply(
[ sort $meta3->attributes_for_new ],
[ sort qw(stuff fancy_name more_stuff) ],
"->attributes_for_new works in an initialized child class"
);
throws_ok { Metatest::child->new() } qr/\QAttribute (stuff) is required for Metatest::child/;
done_testing;
+1 -1
View File
@@ -10,7 +10,7 @@ use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More;
use lib "$ENV{PERCONA_TOOLKIT_BRANCH}/t/lib/Mo";
use lib "$ENV{PERCONA_TOOLKIT_BRANCH}/t/lib/Lmo";
{ package Clean; use Foo; }
+3 -3
View File
@@ -13,14 +13,14 @@ use Test::More;
#============
package Foo::required;
use Mo qw(required);
use Lmo qw(required);
has 'stuff' => (required => 1);
has 'stuff2' => (required => 1);
has 'foo' => ();
#============
package Foo::required_is;
use Mo qw(required);
use Lmo qw(required);
has 'stuff' => (required => 1, is => 'ro');
#============
@@ -28,7 +28,7 @@ has 'stuff' => (required => 1, is => 'ro');
package main;
my $f0 = eval { Foo::required->new(stuff2 => 'foobar') };
like $@, qr/^\QAttribute (stuff) is required/, 'Mo dies when a required value is not provided';
like $@, qr/^\QAttribute (stuff) is required/, 'Lmo dies when a required value is not provided';
my $f = Foo::required->new(stuff => 'fubar', stuff2 => 'foobar');
is $f->stuff, 'fubar', 'Object is correctly initialized when required values are provided';
+2 -2
View File
@@ -11,9 +11,9 @@ use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More;
eval 'package Foo; use Mo; $x = 1';
eval 'package Foo; use Lmo; $x = 1';
like $@, qr/Global symbol "\$x" requires explicit package name/,
'Mo is strict';
'Lmo is strict';
done_testing;
+11 -11
View File
@@ -13,18 +13,18 @@ use Test::More;
#============
package Foo;
use Mo;
use Lmo;
has 'this';
#============
package main;
ok defined(&Foo::has), 'Mo exports has';
ok defined(&Foo::extends), 'Mo exports extends';
ok not(defined(&Foo::new)), 'Mo does not export new';
ok 'Foo'->isa('Mo::Object'), 'Foo isa Mo::Object';
is "@Foo::ISA", "Mo::Object", '@Foo::ISA is Mo::Object';
ok defined(&Foo::has), 'Lmo exports has';
ok defined(&Foo::extends), 'Lmo exports extends';
ok not(defined(&Foo::new)), 'Lmo does not export new';
ok 'Foo'->isa('Lmo::Object'), 'Foo isa Lmo::Object';
is "@Foo::ISA", "Lmo::Object", '@Foo::ISA is Lmo::Object';
ok 'Foo'->can('new'), 'Foo can new';
ok 'Foo'->can('this'), 'Foo can this';
@@ -50,7 +50,7 @@ ok not(defined($f->{this})), '{this} is not defined';
#============
package Bar;
use Mo 'builder', 'default';
use Lmo 'builder', 'default';
extends 'Foo';
has 'that';
@@ -70,7 +70,7 @@ has guess => (
#============
package main;
ok 'Bar'->isa('Mo::Object'), 'Bar isa Mo::Object';
ok 'Bar'->isa('Lmo::Object'), 'Bar isa Lmo::Object';
ok 'Bar'->isa('Foo'), 'Bar isa Foo';
is "@Bar::ISA", 'Foo', '@Bar::ISA is Foo';
ok 'Bar'->can('new'), 'Bar can new';
@@ -85,7 +85,7 @@ my $b = Bar->new(
is ref($b), 'Bar', 'Object created';
ok $b->isa('Foo'), 'Inheritance works';
ok $b->isa('Mo::Object'), 'Bar isa Mo::Object since Foo isa Mo::Object';
ok $b->isa('Lmo::Object'), 'Bar isa Lmo::Object since Foo isa Lmo::Object';
is $b->this, 'thing', 'Read works in parent class';
is $b->that, 'thong', 'Read works in current class';
is ref($b->them), 'ARRAY', 'default works';
@@ -103,7 +103,7 @@ is $b->guess, 'me me me', 'default trumps builder';
#============
package Baz;
use Mo 'build';
use Lmo 'build';
has 'foo';
@@ -114,7 +114,7 @@ sub BUILD {
#============
package Maz;
use Mo;
use Lmo;
extends 'Baz';
has 'bar';