From 7a7f88fcf941c9aca05e235470fc6a43abaf32a3 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 5 Apr 2011 22:42:32 -0500 Subject: tests for reloading roles --- t/data/moose-roles/after/Foo/Role.pm | 13 ++++++++ t/data/moose-roles/before/Bar.pm | 16 ++++++++++ t/data/moose-roles/before/Bar/Role.pm | 15 +++++++++ t/data/moose-roles/before/Baz.pm | 16 ++++++++++ t/data/moose-roles/before/Baz/Role.pm | 13 ++++++++ t/data/moose-roles/before/Foo.pm | 16 ++++++++++ t/data/moose-roles/before/Foo/Role.pm | 13 ++++++++ t/moose-roles.t | 58 +++++++++++++++++++++++++++++++++++ 8 files changed, 160 insertions(+) create mode 100644 t/data/moose-roles/after/Foo/Role.pm create mode 100644 t/data/moose-roles/before/Bar.pm create mode 100644 t/data/moose-roles/before/Bar/Role.pm create mode 100644 t/data/moose-roles/before/Baz.pm create mode 100644 t/data/moose-roles/before/Baz/Role.pm create mode 100644 t/data/moose-roles/before/Foo.pm create mode 100644 t/data/moose-roles/before/Foo/Role.pm create mode 100644 t/moose-roles.t 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; -- cgit v1.2.3