--- /dev/null
+#!perl\r
+\r
+use strict;\r
+use warnings;\r
+\r
+use FindBin;\r
+use lib "$FindBin::Bin/../live/lib";\r
+\r
+use Test::More;\r
+use Catalyst::Test 'TestApp';\r
+use Catalyst::Request;\r
+use Config;\r
+\r
+plan skip_all => 'set TEST_THREADS to enable this test'\r
+ unless $ENV{TEST_THREADS};\r
+\r
+if ( $Config{useithreads} && !$ENV{CATALYST_SERVER} ) {\r
+ require threads;\r
+ plan tests => 3;\r
+}\r
+else {\r
+ if ( $ENV{CATALYST_SERVER} ) {\r
+ plan skip_all => 'Using remote server';\r
+ }\r
+ else {\r
+ plan skip_all => 'Needs a Perl with ithreads enabled';\r
+ }\r
+}\r
+ \r
+no warnings 'redefine';\r
+sub request {\r
+ my $thr = threads->new( \r
+ sub { TestApp->run(@_) },\r
+ @_ \r
+ );\r
+ $thr->join;\r
+}\r
+\r
+# test that running inside a thread works ok\r
+{\r
+ my @expected = qw[\r
+ TestApp::Controller::Action::Default->begin\r
+ TestApp::Controller::Action::Default->default\r
+ TestApp::View::Dump::Request->process\r
+ TestApp->end\r
+ ];\r
+\r
+ my $expected = join( ", ", @expected );\r
+ \r
+ ok( my $response = request('http://localhost/action/default'), 'Request' );\r
+ ok( $response->is_success, 'Response Successful 2xx' );\r
+ is( $response->header('X-Catalyst-Executed'), $expected, 'Executed actions' );\r
+}\r