X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F26dump_use_moose.t;h=f8432d783030f0d881d4c031dda7e033fe32c327;hb=494e020541e534ac7a097872eeeb344a0b13ec5a;hp=97402854b07391a17622af527422f80fe0bad581;hpb=1a8fd9497918b9655f0824a520ab4155bbf51a5c;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/26dump_use_moose.t b/t/26dump_use_moose.t index 9740285..f8432d7 100644 --- a/t/26dump_use_moose.t +++ b/t/26dump_use_moose.t @@ -1,13 +1,10 @@ -use warnings; +use DBIx::Class::Schema::Loader::Optional::Dependencies + -skip_all_without => 'use_moose'; + use strict; +use warnings; use Test::More; -use DBIx::Class::Schema::Loader::Optional::Dependencies (); -BEGIN { - use DBIx::Class::Schema::Loader::Optional::Dependencies (); - plan skip_all => 'Tests needs ' . DBIx::Class::Schema::Loader::Optional::Dependencies->req_missing_for('use_moose') - unless (DBIx::Class::Schema::Loader::Optional::Dependencies->req_ok_for('use_moose')); -} use lib qw(t/lib); use dbixcsl_dumper_tests; @@ -17,114 +14,122 @@ $t->cleanup; # first dump a fresh use_moose=1 schema $t->dump_test( - classname => 'DBICTest::DumpMore::1', - options => { - use_moose => 1, - result_base_class => 'My::ResultBaseClass', - schema_base_class => 'My::SchemaBaseClass', - }, - warnings => [ - qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /, - qr/Schema dump completed/, - ], - regexes => { - schema => [ - qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/, - qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, - ], - Foo => [ - qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/, - qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, - ], - Bar => [ - qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/, - qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, - ], - }, + classname => 'DBICTest::DumpMore::1', + options => { + use_moose => 1, + result_base_class => 'My::ResultBaseClass', + schema_base_class => 'My::SchemaBaseClass', + result_roles => ['TestRole', 'TestRole2'], + }, + regexes => { + schema => [ + qr/\nuse Moose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::SchemaBaseClass';\n\n/, + qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/, + ], + Foo => [ + qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/, + qr/=head1 L ROLES APPLIED\n\n=over 4\n\n=item \* L\n\n=item \* L\n\n=back\n\n=cut\n\n/, + qr/\nwith 'TestRole', 'TestRole2';\n\n/, + qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, + ], + Bar => [ + qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/, + qr/=head1 L ROLES APPLIED\n\n=over 4\n\n=item \* L\n\n=item \* L\n\n=back\n\n=cut\n\n/, + qr/\nwith 'TestRole', 'TestRole2';\n\n/, + qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, + ], + }, +); + +$t->cleanup; + +# check protect_overloads works as expected +$t->dump_test( + classname => 'DBICTest::DumpMore::1', + options => { + use_moose => 1, + only_autoclean => 1, + }, + regexes => { + schema => [ + qr/\nuse namespace::autoclean;\n/, + ], + Foo => [ + qr/\nuse namespace::autoclean;\n/, + ], + }, ); $t->cleanup; # now upgrade a fresh non-moose schema to use_moose=1 $t->dump_test( - classname => 'DBICTest::DumpMore::1', - options => { - use_moose => 0, - result_base_class => 'My::ResultBaseClass', - schema_base_class => 'My::SchemaBaseClass', - }, - warnings => [ - qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /, - qr/Schema dump completed/, - ], - regexes => { - schema => [ - qr/\nuse base 'My::SchemaBaseClass';\n/, - ], - Foo => [ - qr/\nuse base 'My::ResultBaseClass';\n/, - ], - Bar => [ - qr/\nuse base 'My::ResultBaseClass';\n/, - ], - }, + classname => 'DBICTest::DumpMore::1', + options => { + use_moose => 0, + result_base_class => 'My::ResultBaseClass', + schema_base_class => 'My::SchemaBaseClass', + }, + regexes => { + schema => [ + qr/\nuse base 'My::SchemaBaseClass';\n/, + ], + Foo => [ + qr/\nuse base 'My::ResultBaseClass';\n/, + ], + Bar => [ + qr/\nuse base 'My::ResultBaseClass';\n/, + ], + }, ); # check that changed custom content is upgraded for Moose bits $t->append_to_class('DBICTest::DumpMore::1::Foo', q{# XXX This is my custom content XXX}); $t->dump_test( - classname => 'DBICTest::DumpMore::1', - options => { - use_moose => 1, - result_base_class => 'My::ResultBaseClass', - schema_base_class => 'My::SchemaBaseClass', - }, - warnings => [ - qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /, - qr/Schema dump completed/, - ], - regexes => { - schema => [ - qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/, - qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, - ], - Foo => [ - qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/, - qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, - qr/# XXX This is my custom content XXX/, - ], - Bar => [ - qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/, - qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, - ], - }, + classname => 'DBICTest::DumpMore::1', + options => { + use_moose => 1, + result_base_class => 'My::ResultBaseClass', + schema_base_class => 'My::SchemaBaseClass', + }, + regexes => { + schema => [ + qr/\nuse Moose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::SchemaBaseClass';\n\n/, + qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/, + ], + Foo => [ + qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/, + qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, + qr/# XXX This is my custom content XXX/, + ], + Bar => [ + qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/, + qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, + ], + }, ); $t->cleanup; # check with a fresh non-moose schema that Moose custom content added to a use_moose=0 schema is not repeated $t->dump_test( - classname => 'DBICTest::DumpMore::1', - options => { - result_base_class => 'My::ResultBaseClass', - schema_base_class => 'My::SchemaBaseClass', - }, - warnings => [ - qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /, - qr/Schema dump completed/, - ], - regexes => { - schema => [ - qr/\nuse base 'My::SchemaBaseClass';\n/, - ], - Foo => [ - qr/\nuse base 'My::ResultBaseClass';\n/, - ], - Bar => [ - qr/\nuse base 'My::ResultBaseClass';\n/, - ], - }, + classname => 'DBICTest::DumpMore::1', + options => { + result_base_class => 'My::ResultBaseClass', + schema_base_class => 'My::SchemaBaseClass', + }, + regexes => { + schema => [ + qr/\nuse base 'My::SchemaBaseClass';\n/, + ], + Foo => [ + qr/\nuse base 'My::ResultBaseClass';\n/, + ], + Bar => [ + qr/\nuse base 'My::ResultBaseClass';\n/, + ], + }, ); # add Moose custom content then check it is not repeated @@ -133,53 +138,46 @@ $t->dump_test( $t->append_to_class('DBICTest::DumpMore::1::Foo', qq{use Moose;\n__PACKAGE__->meta->make_immutable;\n1;\n}); for my $supply_use_moose (1, 0) { - $t->dump_test( - classname => 'DBICTest::DumpMore::1', - options => { - $supply_use_moose ? (use_moose => 1) : (), - result_base_class => 'My::ResultBaseClass', - schema_base_class => 'My::SchemaBaseClass', - }, - warnings => [ - qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /, - qr/Schema dump completed/, - ], - regexes => { - schema => [ - qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::SchemaBaseClass';\n\n/, - qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, - ], - Foo => [ - qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/, - qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, - ], - Bar => [ - qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse namespace::autoclean;\nextends 'My::ResultBaseClass';\n\n/, - qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, - ], - }, - neg_regexes => { - Foo => [ -# qr/\nuse Moose;\n.*\nuse Moose;/s, # TODO - qr/\n__PACKAGE__->meta->make_immutable;\n.*\n__PACKAGE__->meta->make_immutable;/s, - ], - }, - ); + $t->dump_test( + classname => 'DBICTest::DumpMore::1', + options => { + $supply_use_moose ? (use_moose => 1) : (), + result_base_class => 'My::ResultBaseClass', + schema_base_class => 'My::SchemaBaseClass', + }, + regexes => { + schema => [ + qr/\nuse Moose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::SchemaBaseClass';\n\n/, + qr/\n__PACKAGE__->meta->make_immutable\(inline_constructor => 0\);\n1;(?!\n1;\n)\n.*/, + ], + Foo => [ + qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/, + qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, + ], + Bar => [ + qr/\nuse Moose;\nuse MooseX::NonMoose;\nuse MooseX::MarkAsMethods autoclean => 1;\nextends 'My::ResultBaseClass';\n\n/, + qr/\n__PACKAGE__->meta->make_immutable;\n1;(?!\n1;\n)\n.*/, + ], + }, + neg_regexes => { + Foo => [ + # qr/\nuse Moose;\n.*\nuse Moose;/s, # TODO + qr/\n__PACKAGE__->meta->make_immutable;\n.*\n__PACKAGE__->meta->make_immutable;/s, + ], + }, + ); } # check that a moose schema can *not* be downgraded $t->dump_test ( - classname => 'DBICTest::DumpMore::1', - options => { - use_moose => 0, - result_base_class => 'My::ResultBaseClass', - schema_base_class => 'My::SchemaBaseClass', - }, - warnings => [ - qr/Dumping manual schema for DBICTest::DumpMore::1 to directory /, - ], - error => qr/\QIt is not possible to "downgrade" a schema that was loaded with use_moose => 1\E/, + classname => 'DBICTest::DumpMore::1', + options => { + use_moose => 0, + result_base_class => 'My::ResultBaseClass', + schema_base_class => 'My::SchemaBaseClass', + }, + error => qr/\QIt is not possible to "downgrade" a schema that was loaded with use_moose => 1\E/, ); done_testing;