diff options
author | Jesse Luehrs <doy@tozt.net> | 2011-04-05 21:56:08 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2011-04-05 21:56:08 -0500 |
commit | 728e904fa63ff6fe503e21eba35f1e8c04c57591 (patch) | |
tree | 96f89d0e744e15e34225ab84ec9b40c77d1c230a | |
parent | fc9b385dd96a0ae305986290eaf4ecb41a0e9015 (diff) | |
download | class-refresh-728e904fa63ff6fe503e21eba35f1e8c04c57591.tar.gz class-refresh-728e904fa63ff6fe503e21eba35f1e8c04c57591.zip |
test for reloading subclasses
-rw-r--r-- | t/data/moose-subclasses/after/Foo.pm | 13 | ||||
-rw-r--r-- | t/data/moose-subclasses/before/Foo.pm | 13 | ||||
-rw-r--r-- | t/data/moose-subclasses/before/Foo/Sub.pm | 15 | ||||
-rw-r--r-- | t/moose-subclasses.t | 57 |
4 files changed, 98 insertions, 0 deletions
diff --git a/t/data/moose-subclasses/after/Foo.pm b/t/data/moose-subclasses/after/Foo.pm new file mode 100644 index 0000000..9e15e00 --- /dev/null +++ b/t/data/moose-subclasses/after/Foo.pm @@ -0,0 +1,13 @@ +package Foo; +use Moose; + +$::superclass_reloads++; + +has bar => (is => 'ro'); + +sub other_meth { } + +__PACKAGE__->meta->make_immutable; +no Moose; + +1; diff --git a/t/data/moose-subclasses/before/Foo.pm b/t/data/moose-subclasses/before/Foo.pm new file mode 100644 index 0000000..ea3f28b --- /dev/null +++ b/t/data/moose-subclasses/before/Foo.pm @@ -0,0 +1,13 @@ +package Foo; +use Moose; + +$::superclass_reloads++; + +has foo => (is => 'ro'); + +sub meth { } + +__PACKAGE__->meta->make_immutable; +no Moose; + +1; diff --git a/t/data/moose-subclasses/before/Foo/Sub.pm b/t/data/moose-subclasses/before/Foo/Sub.pm new file mode 100644 index 0000000..757d57c --- /dev/null +++ b/t/data/moose-subclasses/before/Foo/Sub.pm @@ -0,0 +1,15 @@ +package Foo::Sub; +use Moose; + +$::subclass_reloads++; + +extends 'Foo'; + +has baz => (is => 'ro'); + +sub meth { } + +__PACKAGE__->meta->make_immutable; +no Moose; + +1; diff --git a/t/moose-subclasses.t b/t/moose-subclasses.t new file mode 100644 index 0000000..bdbdedb --- /dev/null +++ b/t/moose-subclasses.t @@ -0,0 +1,57 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use Test::Requires 'Moose'; +use lib 't/lib'; +use Test::Class::Refresh; + +use Class::Refresh; + +my $dir = prepare_temp_dir_for('moose-subclasses'); +push @INC, $dir->dirname; + +our ($superclass_reloads, $subclass_reloads) = (0, 0); + +require Foo; +require Foo::Sub; + +Class::Refresh->refresh; + +is($superclass_reloads, 1, "superclass loaded"); +is($subclass_reloads, 1, "subclass loaded"); + +is_deeply([sort map { $_->name } Foo->meta->get_all_attributes], + ['foo'], + "correct starting attr list"); +can_ok('Foo', 'meth'); +ok(!Foo->can('other_meth'), "!Foo->can('other_meth')"); + +is_deeply([sort map { $_->name } Foo::Sub->meta->get_all_attributes], + ['baz', 'foo'], + "correct starting attr list"); +can_ok('Foo::Sub', 'meth'); +ok(!Foo::Sub->can('other_meth'), "!Foo::Sub->can('other_meth')"); + + +sleep 2; +update_temp_dir_for('moose-subclasses', $dir); + +Class::Refresh->refresh; + +is($superclass_reloads, 2, "superclass reloaded"); +is($subclass_reloads, 2, "subclass reloaded"); + +is_deeply([sort map { $_->name } Foo->meta->get_all_attributes], + ['bar'], + "correct new attr list"); +ok(!Foo->can('meth'), "!Foo->can('meth')"); +can_ok('Foo', 'other_meth'); + +is_deeply([sort map { $_->name } Foo::Sub->meta->get_all_attributes], + ['bar', 'baz'], + "correct new attr list"); +can_ok('Foo::Sub', 'meth'); +can_ok('Foo::Sub', 'other_meth'); + +done_testing; |