use strict;
use warnings;
+
use Test::More;
-use Test::Exception;
-lives_ok {
- Bar->new->_connections;
-} 'finds a class attribute under role composition';
+{
+ package Role;
+
+ use Moose::Role;
+ use MooseX::ClassAttribute;
+
+ class_has 'CA' => (
+ is => 'ro',
+ isa => 'HashRef',
+ default => sub { {} },
+ );
+}
+
+{
+ package Role2;
+ use Moose::Role;
+}
+
+{
+ package Bar;
+ use Moose;
+
+ with 'Role2', 'Role';
+}
+
+ok(
+ Bar->can('CA'),
+ 'Class attributes are preserved during role composition'
+);
+
+{
+ package Role3;
+ use Moose::Role;
+ with 'Role';
+}
+
+{
+ package Baz;
+ use Moose;
+
+ with 'Role3';
+}
+
+ok(
+ Baz->can('CA'),
+ 'Class attributes are preserved when role is applied to another role'
+);
+
+{
+ package Role4;
+ use Moose::Role;
+
+ use MooseX::ClassAttribute;
-done_testing;
+ class_has 'CA2' => (
+ is => 'ro',
+ isa => 'HashRef',
+ default => sub { {} },
+ );
+}
-BEGIN {
+{
+ package Buz;
+ use Moose;
-package Role;
-use Moose::Role;
-use MooseX::ClassAttribute;
+ with 'Role', 'Role4';
+}
-class_has '_connections' => (
- is => 'ro',
- isa => 'HashRef',
- default => sub { {} },
- );
+ok(
+ Buz->can('CA'),
+ 'Class attributes are merged from two roles (CA)'
+);
-package Role2;
-use Moose::Role;
+ok(
+ Buz->can('CA2'),
+ 'Class attributes are merged from two roles (CA2)'
+);
-package Bar;
-use Moose;
+{
+ package Role5;
+ use Moose::Role;
+ with 'Role', 'Role4';
+}
-with ('Role2','Role');
+{
+ package Quux;
+ use Moose;
+ with 'Role5';
}
+
+ok(
+ Quux->can('CA'),
+ 'Class attributes are merged from two roles (CA)'
+);
+
+ok(
+ Quux->can('CA2'),
+ 'Class attributes are merged from two roles (CA2)'
+);
+
+done_testing();