summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2011-04-05 22:42:32 -0500
committerJesse Luehrs <doy@tozt.net>2011-04-05 22:42:32 -0500
commit7a7f88fcf941c9aca05e235470fc6a43abaf32a3 (patch)
tree5b374f21ed30a98865ceed33cd3b59314b4a1150
parent43a3a6d662f97d039fe9d02ddf10b89bfc6fd16e (diff)
downloadclass-refresh-7a7f88fcf941c9aca05e235470fc6a43abaf32a3.tar.gz
class-refresh-7a7f88fcf941c9aca05e235470fc6a43abaf32a3.zip
tests for reloading roles
-rw-r--r--t/data/moose-roles/after/Foo/Role.pm13
-rw-r--r--t/data/moose-roles/before/Bar.pm16
-rw-r--r--t/data/moose-roles/before/Bar/Role.pm15
-rw-r--r--t/data/moose-roles/before/Baz.pm16
-rw-r--r--t/data/moose-roles/before/Baz/Role.pm13
-rw-r--r--t/data/moose-roles/before/Foo.pm16
-rw-r--r--t/data/moose-roles/before/Foo/Role.pm13
-rw-r--r--t/moose-roles.t58
8 files changed, 160 insertions, 0 deletions
diff --git a/t/data/moose-roles/after/Foo/Role.pm b/t/data/moose-roles/after/Foo/Role.pm
new file mode 100644
index 0000000..ddb4b3e
--- /dev/null
+++ b/t/data/moose-roles/after/Foo/Role.pm
@@ -0,0 +1,13 @@
+package Foo::Role;
+use Moose::Role;
+
+$::reloads{foo_role}++;
+
+has foo_role2 => (
+ is => 'ro',
+ isa => 'Str',
+);
+
+no Moose::Role;
+
+1;
diff --git a/t/data/moose-roles/before/Bar.pm b/t/data/moose-roles/before/Bar.pm
new file mode 100644
index 0000000..b17562f
--- /dev/null
+++ b/t/data/moose-roles/before/Bar.pm
@@ -0,0 +1,16 @@
+package Bar;
+use Moose;
+
+$::reloads{bar}++;
+
+with 'Bar::Role';
+
+has bar => (
+ is => 'ro',
+ isa => 'Str',
+);
+
+__PACKAGE__->meta->make_immutable;
+no Moose;
+
+1;
diff --git a/t/data/moose-roles/before/Bar/Role.pm b/t/data/moose-roles/before/Bar/Role.pm
new file mode 100644
index 0000000..696a3f1
--- /dev/null
+++ b/t/data/moose-roles/before/Bar/Role.pm
@@ -0,0 +1,15 @@
+package Bar::Role;
+use Moose::Role;
+
+$::reloads{bar_role}++;
+
+with 'Foo::Role';
+
+has bar_role => (
+ is => 'ro',
+ isa => 'Str',
+);
+
+no Moose::Role;
+
+1;
diff --git a/t/data/moose-roles/before/Baz.pm b/t/data/moose-roles/before/Baz.pm
new file mode 100644
index 0000000..072e091
--- /dev/null
+++ b/t/data/moose-roles/before/Baz.pm
@@ -0,0 +1,16 @@
+package Baz;
+use Moose;
+
+$::reloads{baz}++;
+
+with 'Bar::Role', 'Baz::Role';
+
+has baz => (
+ is => 'ro',
+ isa => 'Str',
+);
+
+__PACKAGE__->meta->make_immutable;
+no Moose;
+
+1;
diff --git a/t/data/moose-roles/before/Baz/Role.pm b/t/data/moose-roles/before/Baz/Role.pm
new file mode 100644
index 0000000..efb7bc5
--- /dev/null
+++ b/t/data/moose-roles/before/Baz/Role.pm
@@ -0,0 +1,13 @@
+package Baz::Role;
+use Moose::Role;
+
+$::reloads{baz_role}++;
+
+has baz_role => (
+ is => 'ro',
+ isa => 'Str',
+);
+
+no Moose::Role;
+
+1;
diff --git a/t/data/moose-roles/before/Foo.pm b/t/data/moose-roles/before/Foo.pm
new file mode 100644
index 0000000..580e352
--- /dev/null
+++ b/t/data/moose-roles/before/Foo.pm
@@ -0,0 +1,16 @@
+package Foo;
+use Moose;
+
+$::reloads{foo}++;
+
+with 'Foo::Role';
+
+has foo => (
+ is => 'ro',
+ isa => 'Str',
+);
+
+__PACKAGE__->meta->make_immutable;
+no Moose;
+
+1;
diff --git a/t/data/moose-roles/before/Foo/Role.pm b/t/data/moose-roles/before/Foo/Role.pm
new file mode 100644
index 0000000..743a4c9
--- /dev/null
+++ b/t/data/moose-roles/before/Foo/Role.pm
@@ -0,0 +1,13 @@
+package Foo::Role;
+use Moose::Role;
+
+$::reloads{foo_role}++;
+
+has foo_role1 => (
+ is => 'ro',
+ isa => 'Str',
+);
+
+no Moose::Role;
+
+1;
diff --git a/t/moose-roles.t b/t/moose-roles.t
new file mode 100644
index 0000000..89659d4
--- /dev/null
+++ b/t/moose-roles.t
@@ -0,0 +1,58 @@
+#!/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-roles');
+push @INC, $dir->dirname;
+
+our %reloads;
+
+require Foo;
+require Bar;
+require Baz;
+
+Class::Refresh->refresh;
+
+is_deeply([sort map { $_->name } Foo->meta->get_all_attributes],
+ ['foo', 'foo_role1'],
+ "correct starting attr list");
+is_deeply([sort map { $_->name } Bar->meta->get_all_attributes],
+ ['bar', 'bar_role', 'foo_role1'],
+ "correct starting attr list");
+is_deeply([sort map { $_->name } Baz->meta->get_all_attributes],
+ ['bar_role', 'baz', 'baz_role', 'foo_role1'],
+ "correct starting attr list");
+is_deeply(\%reloads,
+ { foo => 1, foo_role => 1,
+ bar => 1, bar_role => 1,
+ baz => 1, baz_role => 1 },
+ "everything loaded");
+
+
+sleep 2;
+update_temp_dir_for('moose-roles', $dir);
+
+Class::Refresh->refresh;
+
+is_deeply([sort map { $_->name } Foo->meta->get_all_attributes],
+ ['foo', 'foo_role2'],
+ "correct starting attr list");
+is_deeply([sort map { $_->name } Bar->meta->get_all_attributes],
+ ['bar', 'bar_role', 'foo_role2'],
+ "correct starting attr list");
+is_deeply([sort map { $_->name } Baz->meta->get_all_attributes],
+ ['bar_role', 'baz', 'baz_role', 'foo_role2'],
+ "correct starting attr list");
+is_deeply(\%reloads,
+ { foo => 2, foo_role => 2,
+ bar => 2, bar_role => 2,
+ baz => 2, baz_role => 1 },
+ "everything reloaded");
+
+done_testing;