call to $class->import in Catalyst::Test
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Test.pm
index 0f2762e..385d25b 100644 (file)
@@ -3,9 +3,7 @@ package Catalyst::Test;
 use strict;
 use UNIVERSAL::require;
 
-require Catalyst;
-
-my $class;
+$ENV{CATALYST_ENGINE} = 'Test';
 
 =head1 NAME
 
@@ -21,8 +19,25 @@ Catalyst::Test - Test Catalyst applications
     request('index.html');
     get('index.html');
 
-    # Request
-    perl -MCatalyst::Test=MyApp -e1 index.html
+    # Tests with inline apps need to use Catalyst::Engine::Test
+    package TestApp;
+
+    use Catalyst qw[-Engine=Test];
+
+    __PACKAGE__->action(
+        foo => sub {
+            my ( $self, $c ) = @_;
+            $c->res->output('bar');
+        }
+    );
+
+    package main;
+
+    use Test::More tests => 1;
+    use Catalyst::Test 'TestApp';
+
+    ok( get('/foo') =~ /bar/ );
+
 
 =head1 DESCRIPTION
 
@@ -44,31 +59,16 @@ Returns a C<HTTP::Response> object.
 
 =cut
 
-{
-    no warnings;
-    CHECK {
-        if ( ( caller(0) )[1] eq '-e' ) {
-            print request( $ARGV[0] || 'http://localhost' )->content;
-        }
-    }
-}
-
 sub import {
     my $self = shift;
-    if ( $class = shift ) {
+    if ( my $class = shift ) {
         $class->require;
         unless ( $INC{'Test/Builder.pm'} ) {
             die qq/Couldn't load "$class", "$@"/ if $@;
         }
+        $class->import;
 
         no strict 'refs';
-
-        unless ( $class->engine->isa('Catalyst::Engine::Test') ) {
-            require Catalyst::Engine::Test;
-            splice( @{"$class\::ISA"}, @{"$class\::ISA"} - 1,
-                0, 'Catalyst::Engine::Test' );
-        }
-
         my $caller = caller(0);
         *{"$caller\::request"} = sub { $class->run(@_) };
         *{"$caller\::get"}     = sub { $class->run(@_)->content };