Hello community, here is the log from the commit of package perl-Moo for openSUSE:Factory checked in at 2015-08-01 11:36:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Moo (Old) and /work/SRC/openSUSE:Factory/.perl-Moo.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Moo" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Moo/perl-Moo.changes 2015-04-16 14:14:28.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.perl-Moo.new/perl-Moo.changes 2015-08-01 11:36:49.000000000 +0200 @@ -1,0 +2,25 @@ +Sat Jul 25 08:54:22 UTC 2015 - [email protected] + +- updated to 2.000002 + see /usr/share/doc/packages/perl-Moo/Changes + + 2.000002 - 2015-07-24 + - BUILDARGS will now always be called on object creation, even if no + attributes exist + - fix required attributes with spaces or other odd characters in init_arg + - fix (is => 'lazy', required => 1, init_arg => undef), which previously + didn't think it provided a builder + - under 'no Moo::sification', prevent automatic Moose metaclass inflation + from ->meta calls + - don't load Moo::Role for a ->does check if no roles could exist + - make global destruction test more robust from outside interference + - fix false default values satisfying required attributes + - Fix Moose attribute delegation to a Moo class via a wildcard + - work around case where Sub::Util is loadable but doesn't provide + Sub::Util::set_subname + - skip thread tests on perl 5.8.4 and below where threads are extremely + unreliable + - Allow stub methods (e.g. sub foo;) to be overwritten by accessors or other + generated methods. (RT#103804) + +------------------------------------------------------------------- Old: ---- Moo-2.000001.tar.gz New: ---- Moo-2.000002.tar.gz cpanspec.yml ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Moo.spec ++++++ --- /var/tmp/diff_new_pack.3z5gm4/_old 2015-08-01 11:36:50.000000000 +0200 +++ /var/tmp/diff_new_pack.3z5gm4/_new 2015-08-01 11:36:50.000000000 +0200 @@ -17,14 +17,15 @@ Name: perl-Moo -Version: 2.000001 +Version: 2.000002 Release: 0 %define cpan_name Moo Summary: Minimalist Object Orientation (with Moose compatibility) License: Artistic-1.0 or GPL-1.0+ Group: Development/Libraries/Perl Url: http://search.cpan.org/dist/Moo/ -Source: http://www.cpan.org/authors/id/H/HA/HAARG/%{cpan_name}-%{version}.tar.gz +Source0: http://www.cpan.org/authors/id/H/HA/HAARG/%{cpan_name}-%{version}.tar.gz +Source1: cpanspec.yml BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: perl @@ -65,7 +66,6 @@ %prep %setup -q -n %{cpan_name}-%{version} -find . -type f -print0 | xargs -0 chmod 644 %build %{__perl} Makefile.PL INSTALLDIRS=vendor ++++++ Moo-2.000001.tar.gz -> Moo-2.000002.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/Changes new/Moo-2.000002/Changes --- old/Moo-2.000001/Changes 2015-03-16 20:12:50.000000000 +0100 +++ new/Moo-2.000002/Changes 2015-07-24 15:06:31.000000000 +0200 @@ -1,5 +1,24 @@ Revision history for Moo +2.000002 - 2015-07-24 + - BUILDARGS will now always be called on object creation, even if no + attributes exist + - fix required attributes with spaces or other odd characters in init_arg + - fix (is => 'lazy', required => 1, init_arg => undef), which previously + didn't think it provided a builder + - under 'no Moo::sification', prevent automatic Moose metaclass inflation + from ->meta calls + - don't load Moo::Role for a ->does check if no roles could exist + - make global destruction test more robust from outside interference + - fix false default values satisfying required attributes + - Fix Moose attribute delegation to a Moo class via a wildcard + - work around case where Sub::Util is loadable but doesn't provide + Sub::Util::set_subname + - skip thread tests on perl 5.8.4 and below where threads are extremely + unreliable + - Allow stub methods (e.g. sub foo;) to be overwritten by accessors or other + generated methods. (RT#103804) + 2.000001 - 2015-03-16 - Fix how we pick between Sub::Name and Sub::Util if they are both loaded. This fixes how we interact with Moose in some cases. (RT#102729) (GH#15) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/MANIFEST new/Moo-2.000002/MANIFEST --- old/Moo-2.000001/MANIFEST 2015-03-16 20:13:23.000000000 +0100 +++ new/Moo-2.000002/MANIFEST 2015-07-24 15:06:47.000000000 +0200 @@ -17,7 +17,6 @@ lib/oo.pm lib/Sub/Defer.pm lib/Sub/Quote.pm -maint/fulltest maint/Makefile.PL.include Makefile.PL MANIFEST This list of files @@ -48,6 +47,7 @@ t/demolish-bugs-eats_mini.t t/demolish-global_destruction.t t/demolish-throw.t +t/does.t t/extend-constructor.t t/extends-non-moo.t t/extends-role.t @@ -122,6 +122,8 @@ xt/moo-role-types.t xt/moo-roles-into-moose-class-attr-override-with-autoclean.t xt/moo-roles-into-moose-class.t +xt/moo-sification-handlemoose.t +xt/moo-sification-meta.t xt/moo-sification.t xt/moose-accessor-isa.t xt/moose-autoclean-lazy-attr-builders.t @@ -129,6 +131,7 @@ xt/moose-consume-moo-role-no-moo-loaded.t xt/moose-does-moo-role.t xt/moose-extend-moo.t +xt/moose-handles-moo-class.t xt/moose-inflate-error-recurse.t xt/moose-lazy.t xt/moose-method-modifiers.t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/META.json new/Moo-2.000002/META.json --- old/Moo-2.000001/META.json 2015-03-16 20:13:22.000000000 +0100 +++ new/Moo-2.000002/META.json 2015-07-24 15:06:47.000000000 +0200 @@ -4,7 +4,7 @@ "mst - Matt S. Trout (cpan:MSTROUT) <[email protected]>" ], "dynamic_config" : 1, - "generated_by" : "ExtUtils::MakeMaker version 7.04, CPAN::Meta::Converter version 2.143240", + "generated_by" : "ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001", "license" : [ "perl_5" ], @@ -86,7 +86,7 @@ }, "x_IRC" : "irc://irc.perl.org/#moose" }, - "version" : "2.000001", + "version" : "2.000002", "x_authority" : "cpan:MSTROUT", "x_breaks" : { "App::Commando" : "<= 0.012", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/META.yml new/Moo-2.000002/META.yml --- old/Moo-2.000001/META.yml 2015-03-16 20:13:22.000000000 +0100 +++ new/Moo-2.000002/META.yml 2015-07-24 15:06:46.000000000 +0200 @@ -8,7 +8,7 @@ configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 1 -generated_by: 'ExtUtils::MakeMaker version 7.04, CPAN::Meta::Converter version 2.143240' +generated_by: 'ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter version 2.150001' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -35,7 +35,7 @@ bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=Moo license: http://dev.perl.org/licenses/ repository: https://github.com/moose/Moo.git -version: '2.000001' +version: '2.000002' x_authority: cpan:MSTROUT x_breaks: App::Commando: '<= 0.012' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/README new/Moo-2.000002/README --- old/Moo-2.000001/README 2015-03-16 20:13:23.000000000 +0100 +++ new/Moo-2.000002/README 2015-07-24 15:06:47.000000000 +0200 @@ -154,7 +154,7 @@ unshift @args, "attr1" if @args % 2 == 1; return { @args }; - }; + } Foo::Bar->new( 3 ); @@ -722,6 +722,8 @@ bubaflub - Bob Kuo (cpan:BUBAFLUB) <[email protected]> + ether = Karen Etheridge (cpan:ETHER) <[email protected]> + COPYRIGHT Copyright (c) 2010-2015 the Moo "AUTHOR" and "CONTRIBUTORS" as listed above. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/lib/Method/Generate/Accessor.pm new/Moo-2.000002/lib/Method/Generate/Accessor.pm --- old/Moo-2.000001/lib/Method/Generate/Accessor.pm 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/lib/Method/Generate/Accessor.pm 2015-07-23 15:53:58.000000000 +0200 @@ -81,7 +81,7 @@ } } - for my $setting (qw( isa coerce )) { + foreach my $setting (qw( isa coerce )) { next if !exists $spec->{$setting}; $self->_validate_codulatable($setting, $spec->{$setting}, "$into->$name"); } @@ -98,7 +98,7 @@ $spec->{moosify} = [$spec->{moosify}]; } - for my $spec (@{$spec->{moosify}}) { + foreach my $spec (@{$spec->{moosify}}) { $self->_validate_codulatable('moosify', $spec, "$into->$name"); } } @@ -106,7 +106,7 @@ my %methods; if (my $reader = $spec->{reader}) { _die_overwrite($into, $reader, 'a reader') - if !$spec->{allow_overwrite} && *{_getglob("${into}::${reader}")}{CODE}; + if !$spec->{allow_overwrite} && defined &{"${into}::${reader}"}; if (our $CAN_HAZ_XS && $self->is_simple_get($name, $spec)) { $methods{$reader} = $self->_generate_xs( getters => $into, $reader, $name, $spec @@ -123,7 +123,7 @@ } if (my $accessor = $spec->{accessor}) { _die_overwrite($into, $accessor, 'an accessor') - if !$spec->{allow_overwrite} && *{_getglob("${into}::${accessor}")}{CODE}; + if !$spec->{allow_overwrite} && defined &{"${into}::${accessor}"}; if ( our $CAN_HAZ_XS && $self->is_simple_get($name, $spec) @@ -143,7 +143,7 @@ } if (my $writer = $spec->{writer}) { _die_overwrite($into, $writer, 'a writer') - if !$spec->{allow_overwrite} && *{_getglob("${into}::${writer}")}{CODE}; + if !$spec->{allow_overwrite} && defined &{"${into}::${writer}"}; if ( our $CAN_HAZ_XS && $self->is_simple_set($name, $spec) @@ -162,7 +162,7 @@ } if (my $pred = $spec->{predicate}) { _die_overwrite($into, $pred, 'a predicate') - if !$spec->{allow_overwrite} && *{_getglob("${into}::${pred}")}{CODE}; + if !$spec->{allow_overwrite} && defined &{"${into}::${pred}"}; if (our $CAN_HAZ_XS && our $CAN_HAZ_XS_PRED) { $methods{$pred} = $self->_generate_xs( exists_predicates => $into, $pred, $name, $spec @@ -179,7 +179,7 @@ } if (my $cl = $spec->{clearer}) { _die_overwrite($into, $cl, 'a clearer') - if !$spec->{allow_overwrite} && *{_getglob("${into}::${cl}")}{CODE}; + if !$spec->{allow_overwrite} && defined &{"${into}::${cl}"}; $methods{$cl} = quote_sub "${into}::${cl}" => $self->_generate_simple_clear('$_[0]', $name, $spec)."\n" @@ -202,7 +202,7 @@ foreach my $delegation_spec (@specs) { my ($proxy, $target, @args) = @$delegation_spec; _die_overwrite($into, $proxy, 'a delegation') - if !$spec->{allow_overwrite} && *{_getglob("${into}::${proxy}")}{CODE}; + if !$spec->{allow_overwrite} && defined &{"${into}::${proxy}"}; $self->{captures} = {}; $methods{$proxy} = quote_sub "${into}::${proxy}" => @@ -241,6 +241,11 @@ !grep $spec->{$_}, qw(coerce isa trigger weak_ref); } +sub has_default { + my ($self, $name, $spec) = @_; + $spec->{builder} or exists $spec->{default} or (($spec->{is}||'') eq 'lazy'); +} + sub has_eager_default { my ($self, $name, $spec) = @_; (!$spec->{lazy} and (exists $spec->{default} or $spec->{builder})); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/lib/Method/Generate/Constructor.pm new/Moo-2.000002/lib/Method/Generate/Constructor.pm --- old/Moo-2.000001/lib/Method/Generate/Constructor.pm 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/lib/Method/Generate/Constructor.pm 2015-07-23 15:53:58.000000000 +0200 @@ -29,8 +29,7 @@ } if ($new_spec->{required} && !( - exists $new_spec->{default} - || $new_spec->{builder} + $self->accessor_generator->has_default($name, $new_spec) || !exists $new_spec->{init_arg} || defined $new_spec->{init_arg} ) @@ -228,11 +227,11 @@ map $spec->{$_}{init_arg}, grep { my %s = %{$spec->{$_}}; # ignore required if default or builder set - $s{required} and not($s{builder} or $s{default}) + $s{required} and not($s{builder} or exists $s{default}) } sort keys %$spec; return '' unless @required_init; - ' if (my @missing = grep !exists $args->{$_}, qw(' - .join(' ',@required_init).')) {'."\n" + ' if (my @missing = grep !exists $args->{$_}, ' + .join(', ', map quotify($_), @required_init).') {'."\n" .q{ die "Missing required arguments: ".join(', ', sort @missing);}."\n" ." }\n"; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/lib/Moo/HandleMoose/FakeMetaClass.pm new/Moo-2.000002/lib/Moo/HandleMoose/FakeMetaClass.pm --- old/Moo-2.000001/lib/Moo/HandleMoose/FakeMetaClass.pm 2015-03-04 13:31:51.000000000 +0100 +++ new/Moo-2.000002/lib/Moo/HandleMoose/FakeMetaClass.pm 2015-07-23 00:24:31.000000000 +0200 @@ -7,21 +7,23 @@ my ($meth) = (our $AUTOLOAD =~ /([^:]+)$/); my $self = shift; die "Can't call $meth without object instance" - unless ref $self; + if !ref $self; + die "Can't inflate Moose metaclass with Moo::sification disabled" + if $Moo::sification::disabled; require Moo::HandleMoose; Moo::HandleMoose::inject_real_metaclass_for($self->{name})->$meth(@_) } sub can { my $self = shift; return $self->SUPER::can(@_) - unless ref $self; + if !ref $self or $Moo::sification::disabled; require Moo::HandleMoose; Moo::HandleMoose::inject_real_metaclass_for($self->{name})->can(@_) } sub isa { my $self = shift; return $self->SUPER::isa(@_) - unless ref $self; + if !ref $self or $Moo::sification::disabled; require Moo::HandleMoose; Moo::HandleMoose::inject_real_metaclass_for($self->{name})->isa(@_) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/lib/Moo/HandleMoose.pm new/Moo-2.000002/lib/Moo/HandleMoose.pm --- old/Moo-2.000001/lib/Moo/HandleMoose.pm 2015-02-27 10:14:56.000000000 +0100 +++ new/Moo-2.000002/lib/Moo/HandleMoose.pm 2015-07-23 00:24:31.000000000 +0200 @@ -1,6 +1,6 @@ package Moo::HandleMoose; - use Moo::_strictures; +no warnings 'once'; use Moo::_Utils; use Sub::Quote qw(quotify); @@ -11,12 +11,15 @@ sub import { return if $SETUP_DONE; inject_all(); $SETUP_DONE = 1; } sub inject_all { + die "Can't inflate Moose metaclass with Moo::sification disabled" + if $Moo::sification::disabled; require Class::MOP; inject_fake_metaclass_for($_) for grep $_ ne 'Moo::Object', do { no warnings 'once'; keys %Moo::MAKERS }; inject_fake_metaclass_for($_) for keys %Moo::Role::INFO; require Moose::Meta::Method::Constructor; @Moo::HandleMoose::FakeConstructor::ISA = 'Moose::Meta::Method::Constructor'; + @Moo::HandleMoose::FakeMeta::ISA = 'Moose::Meta::Method::Meta'; } sub maybe_reinject_fake_metaclass_for { @@ -75,7 +78,7 @@ } }; - for my $spec (values %$attr_specs) { + foreach my $spec (values %$attr_specs) { if (my $inflators = delete $spec->{moosify}) { $_->($spec) for @$inflators; } @@ -172,7 +175,7 @@ } } } - for my $meth_name (keys %methods) { + foreach my $meth_name (keys %methods) { my $meth_code = $methods{$meth_name}; $meta->add_method($meth_name, $meth_code) if $meth_code; } @@ -196,6 +199,13 @@ $meta->find_method_by_name('new'), 'Moo::HandleMoose::FakeConstructor', ); + my $meta_meth; + if ( + $meta_meth = $meta->find_method_by_name('meta') + and $meta_meth->body == \&Moo::Object::meta + ) { + bless($meta_meth, 'Moo::HandleMoose::FakeMeta'); + } # a combination of Moo and Moose may bypass a Moo constructor but still # use a Moo DEMOLISHALL. We need to make sure this is loaded before # global destruction. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/lib/Moo/Object.pm new/Moo-2.000002/lib/Moo/Object.pm --- old/Moo-2.000001/lib/Moo/Object.pm 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/lib/Moo/Object.pm 2015-07-23 15:56:17.000000000 +0200 @@ -17,15 +17,13 @@ })->generate_method($class); } } + my $proto = $class->BUILDARGS(@_); $NO_BUILD{$class} and return bless({}, $class); $NO_BUILD{$class} = !$class->can('BUILD') unless exists $NO_BUILD{$class}; $NO_BUILD{$class} ? bless({}, $class) - : do { - my $proto = ref($_[0]) eq 'HASH' ? $_[0] : { @_ }; - bless({}, $class)->BUILDALL($proto); - }; + : bless({}, $class)->BUILDALL($proto); } # Inlined into Method::Generate::Constructor::_generate_args() - keep in sync @@ -64,6 +62,8 @@ } sub does { + return !!0 + unless ($INC{'Moose/Role.pm'} || $INC{'Role/Tiny.pm'}); require Moo::Role; my $does = Moo::Role->can("does_role"); { no warnings 'redefine'; *does = $does } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/lib/Moo/Role.pm new/Moo-2.000002/lib/Moo/Role.pm --- old/Moo-2.000001/lib/Moo/Role.pm 2015-03-16 20:12:47.000000000 +0100 +++ new/Moo-2.000002/lib/Moo/Role.pm 2015-07-24 15:06:25.000000000 +0200 @@ -5,10 +5,11 @@ use Role::Tiny (); our @ISA = qw(Role::Tiny); -our $VERSION = '2.000001'; +our $VERSION = '2.000002'; $VERSION = eval $VERSION; require Moo::sification; +Moo::sification->import; BEGIN { *INFO = \%Role::Tiny::INFO; @@ -379,6 +380,7 @@ if ($INC{'Moose.pm'} and $meta = Class::MOP::class_of($proto) and ref $meta ne 'Moo::HandleMoose::FakeMetaClass' + and $meta->can('does_role') ) { return $meta->does_role($role); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/lib/Moo/_Utils.pm new/Moo-2.000002/lib/Moo/_Utils.pm --- old/Moo-2.000001/lib/Moo/_Utils.pm 2015-03-13 22:57:17.000000000 +0100 +++ new/Moo-2.000002/lib/Moo/_Utils.pm 2015-07-23 00:24:31.000000000 +0200 @@ -6,10 +6,14 @@ sub _getstash { \%{"$_[0]::"} } use constant lt_5_8_3 => ( $] < 5.008003 or $ENV{MOO_TEST_PRE_583} ) ? 1 : 0; -use constant can_haz_subutil => $INC{"Sub/Util.pm"} - || ( !$INC{"Sub/Name.pm"} && eval { require Sub::Util } ); -use constant can_haz_subname => $INC{"Sub/Name.pm"} - || ( !$INC{"Sub/Util.pm"} && eval { require Sub::Name } ); +use constant can_haz_subutil => ( + $INC{"Sub/Util.pm"} + || ( !$INC{"Sub/Name.pm"} && eval { require Sub::Util } ) + ) && defined &Sub::Util::set_subname; +use constant can_haz_subname => ( + $INC{"Sub/Name.pm"} + || ( !$INC{"Sub/Util.pm"} && eval { require Sub::Name } ) + ) && defined &Sub::Name::subname; use Moo::_strictures; use Module::Runtime qw(use_package_optimistically module_notional_filename); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/lib/Moo/sification.pm new/Moo-2.000002/lib/Moo/sification.pm --- old/Moo-2.000001/lib/Moo/sification.pm 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/lib/Moo/sification.pm 2015-07-23 00:24:31.000000000 +0200 @@ -4,20 +4,29 @@ no warnings 'once'; use Devel::GlobalDestruction qw(in_global_destruction); -sub unimport { our $disarmed = 1 } +sub unimport { + die "Can't disable Moo::sification after inflation has been done" + if $Moo::HandleMoose::SETUP_DONE; + our $disabled = 1; +} sub Moo::HandleMoose::AuthorityHack::DESTROY { - unless (our $disarmed or in_global_destruction) { + unless (our $disabled or in_global_destruction) { require Moo::HandleMoose; Moo::HandleMoose->import; } } -if ($INC{"Moose.pm"}) { - require Moo::HandleMoose; - Moo::HandleMoose->import; -} else { - $Moose::AUTHORITY = bless({}, 'Moo::HandleMoose::AuthorityHack'); +sub import { + return + if our $setup_done; + if ($INC{"Moose.pm"}) { + require Moo::HandleMoose; + Moo::HandleMoose->import; + } else { + $Moose::AUTHORITY = bless({}, 'Moo::HandleMoose::AuthorityHack'); + } + $setup_done = 1; } 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/lib/Moo.pm new/Moo-2.000002/lib/Moo.pm --- old/Moo-2.000001/lib/Moo.pm 2015-03-16 20:12:47.000000000 +0100 +++ new/Moo-2.000002/lib/Moo.pm 2015-07-24 15:06:25.000000000 +0200 @@ -3,10 +3,11 @@ use Moo::_strictures; use Moo::_Utils; -our $VERSION = '2.000001'; +our $VERSION = '2.000002'; $VERSION = eval $VERSION; require Moo::sification; +Moo::sification->import; our %MAKERS; @@ -405,7 +406,7 @@ unshift @args, "attr1" if @args % 2 == 1; return { @args }; - }; + } Foo::Bar->new( 3 ); @@ -988,6 +989,8 @@ bubaflub - Bob Kuo (cpan:BUBAFLUB) <[email protected]> +ether = Karen Etheridge (cpan:ETHER) <[email protected]> + =head1 COPYRIGHT Copyright (c) 2010-2015 the Moo L</AUTHOR> and L</CONTRIBUTORS> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/lib/Sub/Defer.pm new/Moo-2.000002/lib/Sub/Defer.pm --- old/Moo-2.000001/lib/Sub/Defer.pm 2015-03-16 20:12:47.000000000 +0100 +++ new/Moo-2.000002/lib/Sub/Defer.pm 2015-07-24 15:06:25.000000000 +0200 @@ -5,7 +5,7 @@ use Moo::_Utils qw(_getglob _install_coderef); use Scalar::Util qw(weaken); -our $VERSION = '2.000001'; +our $VERSION = '2.000002'; $VERSION = eval $VERSION; our @EXPORT = qw(defer_sub undefer_sub undefer_all); @@ -72,7 +72,7 @@ sub CLONE { %DEFERRED = map { defined $_ && $_->[3] ? ($_->[3] => $_) : () } values %DEFERRED; - for my $info (values %DEFERRED) { + foreach my $info (values %DEFERRED) { weaken($info) unless $info->[0] && ${$info->[2]}; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/lib/Sub/Quote.pm new/Moo-2.000002/lib/Sub/Quote.pm --- old/Moo-2.000001/lib/Sub/Quote.pm 2015-03-16 20:12:47.000000000 +0100 +++ new/Moo-2.000002/lib/Sub/Quote.pm 2015-07-24 15:06:25.000000000 +0200 @@ -12,7 +12,7 @@ *_HAVE_PERLSTRING = defined &B::perlstring ? sub(){1} : sub(){0}; } -our $VERSION = '2.000001'; +our $VERSION = '2.000002'; $VERSION = eval $VERSION; our @EXPORT = qw(quote_sub unquote_sub quoted_from_sub qsub); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/maint/fulltest new/Moo-2.000002/maint/fulltest --- old/Moo-2.000001/maint/fulltest 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/maint/fulltest 1970-01-01 01:00:00.000000000 +0100 @@ -1,24 +0,0 @@ -#!/bin/sh - -TEST_DIRS='t xt' - -while [ "$#" -gt "0" ]; do - case $1 in - --cover) - cover -delete -silent - export HARNESS_PERL_SWITCHES='-MDevel::Cover=-ignore,^x?t/,-blib,0' - ;; - *) - echo "Invalid option: $1" - exit 1 - ;; - esac - shift -done - -if [ -n "$AUTHOR_TESTING" ] && [ "$AUTHOR_TESTING" -eq 0 ]; then - TEST_DIRS='t' -fi - -export MOO_FATAL_WARNINGS=1 -prove -l $TEST_DIRS && MOO_XS_DISABLE=1 prove -l $TEST_DIRS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/t/accessor-default.t new/Moo-2.000002/t/accessor-default.t --- old/Moo-2.000001/t/accessor-default.t 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/t/accessor-default.t 2015-07-23 00:24:31.000000000 +0200 @@ -1,5 +1,6 @@ use Moo::_strictures; use Test::More; +use Test::Fatal; my $c_ran; { @@ -83,7 +84,26 @@ is($foo->fifteen, undef, 'undef default'); ok(exists $foo->{fifteen}, 'undef default is stored'); -is( Foo->new->default_with_coerce, "blah\n" ); -is( Foo->new->default_no_coerce, "blah\n" ); +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; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/t/accessor-handles.t new/Moo-2.000002/t/accessor-handles.t --- old/Moo-2.000001/t/accessor-handles.t 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/t/accessor-handles.t 2015-07-23 00:24:31.000000000 +0200 @@ -85,6 +85,13 @@ like $e, qr{You cannot overwrite a locally defined method \(smash\) with a delegation}, '... and has correct error message'; +is exception { + package Buzz; + use Moo; + has foo => ( is => 'ro', handles => 'Robot' ); + sub smash; +}, undef, 'handles can overwrite predeclared subs'; + ok(exception { package Fuzz; use Moo; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/t/buildargs.t new/Moo-2.000002/t/buildargs.t --- old/Moo-2.000001/t/buildargs.t 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/t/buildargs.t 2015-07-23 15:59:32.000000000 +0200 @@ -135,6 +135,9 @@ { package NoAttr; use Moo; + before BUILDARGS => sub { + our $buildargs_called++; + }; } eval { @@ -143,7 +146,9 @@ like( $@, qr/Single parameters to new\(\) must be a HASH ref/, "default BUILDARGS requires a list or a HASH ref" ); +$NoAttr::buildargs_called = 0; my $noattr = NoAttr->new({ foo => 'bar' }); is $noattr->{foo}, undef, 'without attributes, no params are stored'; +is $NoAttr::buildargs_called, 1, 'BUILDARGS called even without attributes'; done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/t/demolish-global_destruction.t new/Moo-2.000002/t/demolish-global_destruction.t --- old/Moo-2.000001/t/demolish-global_destruction.t 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/t/demolish-global_destruction.t 2015-07-23 00:24:31.000000000 +0200 @@ -1,10 +1,23 @@ use Moo::_strictures; no warnings 'once'; -use Test::More tests => 2; use POSIX (); -Test::More->builder->no_ending(1); + +$| = 1; our $fail = 2; +our $tests = 0; +sub ok { + my ($ok, $message) = @_; + print + +($ok ? '' : 'not ') + . 'ok ' . ++$tests + . ($message ? " - $message" : '') + . "\n"; + return $ok; +} + +print "1..2\n"; + BEGIN { package Foo; use Moo; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/t/does.t new/Moo-2.000002/t/does.t --- old/Moo-2.000001/t/does.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Moo-2.000002/t/does.t 2015-07-23 00:24:31.000000000 +0200 @@ -0,0 +1,48 @@ +use Moo::_strictures; +use Test::More; + +BEGIN { + package TestParent; + use Moo; +} + +BEGIN { + package TestClass; + use Moo; + extends 'TestParent'; + + has attr1 => (is => 'ro'); +} + +BEGIN { + ok !TestClass->does('TestRole'), + "->does returns false for arbitrary role"; + ok !$INC{'Moo/Role.pm'}, + "Moo::Role not loaded by does"; +} + +BEGIN { + package TestRole; + use Moo::Role; + + has attr2 => (is => 'ro'); +} + +BEGIN { + package TestClass; + with 'TestRole'; +} + +BEGIN { + ok +TestClass->does('TestRole'), + "->does returns true for composed role"; + + ok +TestClass->DOES('TestRole'), + "->DOES returns true for composed role"; + + ok +TestClass->DOES('TestParent'), + "->DOES returns true for parent class"; +} + +done_testing; + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/t/init-arg.t new/Moo-2.000002/t/init-arg.t --- old/Moo-2.000001/t/init-arg.t 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/t/init-arg.t 2015-07-23 00:24:31.000000000 +0200 @@ -72,4 +72,37 @@ "lazy init_arg", ); +{ + package Bar; + + use Moo; + + has sane_key_name => ( + is => 'rw', + init_arg => 'stupid key name', + isa => sub { die "isa" if $_[0] % 2 }, + required => 1 + ); + has sane_key_name2 => ( + is => 'rw', + init_arg => 'complete\nnonsense\\\'key', + isa => sub { die "isa" if $_[0] % 2 }, + required => 1 + ); +} + +my $bar; +is( + exception { + $bar= Bar->new( + 'stupid key name' => 4, + 'complete\nnonsense\\\'key' => 6 + ) + }, + undef, 'requiring init_arg with spaces and insanity', +); + +is( $bar->sane_key_name, 4, 'key renamed correctly' ); +is( $bar->sane_key_name2, 6, 'key renamed correctly' ); + done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/t/moo-utils-_name_coderef.t new/Moo-2.000002/t/moo-utils-_name_coderef.t --- old/Moo-2.000001/t/moo-utils-_name_coderef.t 2015-03-15 02:45:27.000000000 +0100 +++ new/Moo-2.000002/t/moo-utils-_name_coderef.t 2015-07-23 00:24:31.000000000 +0200 @@ -2,8 +2,11 @@ use Test::More; BEGIN { + no warnings 'redefine'; $INC{'Sub/Name.pm'} = 1; + defined &Sub::Name::subname or *Sub::Name::subname = sub {}; $INC{'Sub/Util.pm'} = 1; + defined &Sub::Util::set_subname or *Sub::Util::set_subname = sub {}; } use Moo::_Utils; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/t/sub-defer-threads.t new/Moo-2.000002/t/sub-defer-threads.t --- old/Moo-2.000001/t/sub-defer-threads.t 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/t/sub-defer-threads.t 2015-07-23 00:24:31.000000000 +0200 @@ -4,6 +4,10 @@ print "1..0 # SKIP your perl does not support ithreads\n"; exit 0; } + if ($] <= 5.008004) { + print "1..0 # SKIP threads not reliable enough on perl <= 5.8.4\n"; + exit 0; + } } use threads; use Moo::_strictures; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/t/sub-quote-threads.t new/Moo-2.000002/t/sub-quote-threads.t --- old/Moo-2.000001/t/sub-quote-threads.t 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/t/sub-quote-threads.t 2015-07-23 00:24:31.000000000 +0200 @@ -4,6 +4,10 @@ print "1..0 # SKIP your perl does not support ithreads\n"; exit 0; } + if ($] <= 5.008004) { + print "1..0 # SKIP threads not reliable enough on perl <= 5.8.4\n"; + exit 0; + } } use threads; use Moo::_strictures; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/t/zzz-check-breaks.t new/Moo-2.000002/t/zzz-check-breaks.t --- old/Moo-2.000001/t/zzz-check-breaks.t 2015-02-26 10:58:33.000000000 +0100 +++ new/Moo-2.000002/t/zzz-check-breaks.t 2015-07-23 00:24:31.000000000 +0200 @@ -2,17 +2,19 @@ use warnings; use Test::More; +my $meta_file; BEGIN { eval { require CPAN::Meta } or plan skip_all => 'CPAN::Meta required for checking breakages'; eval { require CPAN::Meta::Requirements } or plan skip_all => 'CPAN::Meta::Requirements required for checking breakages'; + ($meta_file) = grep -f, qw(MYMETA.json MYMETA.yml META.json META.yml) + or plan skip_all => 'no META file exists'; } use ExtUtils::MakeMaker; use Module::Runtime qw(module_notional_filename); -my ($meta_file) = grep -f, qw(MYMETA.json MYMETA.yml META.json META.yml); my $meta = CPAN::Meta->load_file($meta_file)->as_struct; my $req = CPAN::Meta::Requirements->from_string_hash( $meta->{x_breaks} ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/xt/moo-sification-handlemoose.t new/Moo-2.000002/xt/moo-sification-handlemoose.t --- old/Moo-2.000001/xt/moo-sification-handlemoose.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Moo-2.000002/xt/moo-sification-handlemoose.t 2015-07-23 00:24:31.000000000 +0200 @@ -0,0 +1,19 @@ +use Moo::_strictures; +use Test::More; +use Test::Fatal; + +BEGIN { + package Foo; + use Moo; + has one => (is => 'ro'); +} + +use Moo::HandleMoose; + +require Moo::sification; + +like exception { Moo::sification->unimport }, + qr/Can't disable Moo::sification after inflation has been done/, + 'Moo::sification can\'t be disabled after inflation'; + +done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/xt/moo-sification-meta.t new/Moo-2.000002/xt/moo-sification-meta.t --- old/Moo-2.000001/xt/moo-sification-meta.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Moo-2.000002/xt/moo-sification-meta.t 2015-07-23 00:24:31.000000000 +0200 @@ -0,0 +1,40 @@ +use Moo::_strictures; +use Test::More; +use Test::Fatal; + +BEGIN { + package Foo; + use Moo; + has one => (is => 'ro'); +} + +no Moo::sification; +is exception { Foo->meta->make_immutable }, undef, + 'make_immutable allowed under no Moo::sification'; + +like exception { Foo->meta->get_methods_list }, + qr/^Can't inflate Moose metaclass with Moo::sification disabled/, + 'meta methods blocked under no Moo::sification'; + +is exception { + is +Foo->meta->can('can'), \&Moo::HandleMoose::FakeMetaClass::can, + '->meta->can falls back to default under no Moo::sification'; +}, undef, + '->meta->can works under no Moo::sification'; + +is exception { + ok +Foo->meta->isa('Moo::HandleMoose::FakeMetaClass'), + '->meta->isa falls back to default under no Moo::sification'; +}, undef, + '->meta->isa works under no Moo::sification'; + +like exception { Foo->meta->get_methods_list }, + qr/^Can't inflate Moose metaclass with Moo::sification disabled/, + 'meta methods blocked under no Moo::sification'; + +require Moo::HandleMoose; +like exception { Moo::HandleMoose->import }, + qr/^Can't inflate Moose metaclass with Moo::sification disabled/, + 'Moo::HandleMoose->import blocked under no Moo::sification'; + +done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Moo-2.000001/xt/moose-handles-moo-class.t new/Moo-2.000002/xt/moose-handles-moo-class.t --- old/Moo-2.000001/xt/moose-handles-moo-class.t 1970-01-01 01:00:00.000000000 +0100 +++ new/Moo-2.000002/xt/moose-handles-moo-class.t 2015-07-23 00:24:31.000000000 +0200 @@ -0,0 +1,23 @@ +use strict; +use warnings; +use Test::More; +use Test::Fatal; + +{ + package Foo; + use Moo; + sub sub1 { 1 } +} +{ + package Bar; + use Moose; + ::is ::exception { + has attr => ( + is => 'ro', + isa => 'Foo', + handles => qr/.*/, + ); + }, undef, 'regex handles in Moose with Moo class isa'; +} + +done_testing; ++++++ cpanspec.yml ++++++ --- #description_paragraphs: 3 #no_testing: broken upstream #sources: # - source1 # - source2 #patches: # foo.patch: -p1 # bar.patch: #preamble: |- # BuildRequires: gcc-c++ #post_prep: |- # hunspell=`pkg-config --libs hunspell | sed -e 's,-l,,; s, *,,g'` # sed -i -e "s,hunspell-X,$hunspell," t/00-prereq.t Makefile.PL #post_install: |- # sed on %{name}.files #license: SUSE-NonFree #skip_noarch: 1 #custom_build: |- #./Build build flags=%{?_smp_mflags} --myflag #custom_test: |- #startserver && make test #ignore_requires: Bizarre::Module
