set correct %INC
John Napiorkowski [Mon, 20 Jun 2016 16:35:17 +0000 (11:35 -0500)]
t/class_traits.t
t/class_traits_CAR_bug.t [new file with mode: 0644]

index 2f6e4f3..edccea2 100644 (file)
@@ -18,7 +18,7 @@ BEGIN {
   sub c { 'c' }
 
   package TestApp::TraitFor::Request::Bar;
-  $INC{'Catalyst/TraitFor/Request/Bar.pm'} = __FILE__;
+  $INC{'TestApp/TraitFor/Request/Bar.pm'} = __FILE__;
   use Moose::Role;
 
   sub d { 'd' }
@@ -31,7 +31,7 @@ BEGIN {
   sub c { 'c' }
 
   package TestApp::TraitFor::Response::Bar; 
-  $INC{'Catalyst/TraitFor/Response/Bar.pm'} = __FILE__;
+  $INC{'TestApp/TraitFor/Response/Bar.pm'} = __FILE__;
 
   use Moose::Role;
 
diff --git a/t/class_traits_CAR_bug.t b/t/class_traits_CAR_bug.t
new file mode 100644 (file)
index 0000000..d160e73
--- /dev/null
@@ -0,0 +1,70 @@
+use strict;
+use warnings;
+use Test::More;
+use Class::MOP;
+
+BEGIN {
+  use Test::More;
+  eval "use Catalyst::Action::REST; 1" || do {
+    plan skip_all => "Trouble loading Catalyst::Action::REST => $@";
+  };
+}
+
+BEGIN {
+  package TestRole;
+  $INC{'TestRole'} = __FILE__;
+  use Moose::Role;
+
+  sub a { 'a' }
+  sub b { 'b' }
+
+  package Catalyst::TraitFor::Request::Foo;
+  $INC{'Catalyst/TraitFor/Request/Foo.pm'} = __FILE__;
+  use Moose::Role;
+
+  sub c { 'c' }
+
+  package TestApp::TraitFor::Request::Bar;
+  $INC{'TestApp/TraitFor/Request/Bar.pm'} = __FILE__;
+  use Moose::Role;
+
+  sub d { 'd' }
+
+  package TestApp::Controller::Root;
+  $INC{'TestApp/Controller/Root.pm'} = __FILE__;
+
+  use Moose;
+  use MooseX::MethodAttributes;
+
+
+}
+{
+  package TestApp;
+  $INC{'TestApp.pm'} = __FILE__;
+  use Catalyst;
+
+  __PACKAGE__->request_class_traits([qw/TestRole Foo Bar/]);
+  __PACKAGE__->setup;
+}
+foreach my $class_prefix (qw/request/) {
+  my $method = 'composed_' .$class_prefix. '_class';
+  ok(
+    Class::MOP::class_of(TestApp->$method)->does_role('TestRole'),
+    "$method does TestRole",
+  );
+}
+
+use Catalyst::Test 'TestApp';
+
+my ($res, $c) = ctx_request '/';
+
+is $c->req->a, 'a';
+is $c->req->b, 'b';
+is $c->req->c, 'c';
+is $c->req->d, 'd';
+
+done_testing;