X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FTest.pm;h=fd53e180b2883d69b6a2273dd0d1354a80636ad0;hb=bc024080353d9982272a134e49e8601ed20c1a50;hp=926885bd4b369879c4c8dd5fac4511bf8784537c;hpb=7833fdfca73ff8a03769523ec85c2343a3994360;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Test.pm b/lib/Catalyst/Test.pm index 926885b..fd53e18 100644 --- a/lib/Catalyst/Test.pm +++ b/lib/Catalyst/Test.pm @@ -6,6 +6,8 @@ use HTTP::Response; use Socket; use URI; +require Catalyst; + my $class; $ENV{CATALYST_ENGINE} = 'CGI'; $ENV{CATALYST_TEST} = 1; @@ -59,15 +61,16 @@ Returns a C object. sub import { my $self = shift; - $class = shift; - $class->require; - if ( ( caller(0) )[1] eq '-e' ) { - die qq/Couldn't load "$class", "$@"/ if $@; + if ( $class = shift ) { + $class->require; + unless ( $INC{'Test/Builder.pm'} ) { + die qq/Couldn't load "$class", "$@"/ if $@; + } + my $caller = caller(0); + no strict 'refs'; + *{"$caller\::request"} = \&request; + *{"$caller\::get"} = sub { request(@_)->content }; } - my $caller = caller(0); - no strict 'refs'; - *{"$caller\::request"} = \&request; - *{"$caller\::get"} = sub { request(@_)->content }; } sub request { @@ -96,7 +99,7 @@ Starts a testserver. =cut sub server { - my $port = shift; + my ( $port, $script ) = @_; # Listen my $tcp = getprotobyname('tcp'); @@ -164,7 +167,7 @@ sub server { $ENV{QUERY_STRING} = $query_string || ''; $ENV{CONTENT_TYPE} ||= 'multipart/form-data'; $ENV{SERVER_SOFTWARE} ||= "Catalyst/$Catalyst::VERSION"; - $class->run; + $script ? print STDOUT `$script` : $class->run; } }