Assume FastCGI mode if STDIN is a socket (works some places env vars fail)
[catagits/Web-Simple.git] / lib / Web / Simple / Application.pm
index d3806df..235b871 100644 (file)
@@ -62,7 +62,10 @@ sub to_psgi_app {
 
 sub run {
   my $self = shift;
-  if ($ENV{PHP_FCGI_CHILDREN} || $ENV{FCGI_ROLE} || $ENV{FCGI_SOCKET_PATH}) {
+  if (
+    $ENV{PHP_FCGI_CHILDREN} || $ENV{FCGI_ROLE} || $ENV{FCGI_SOCKET_PATH}
+    || -S STDIN # STDIN is a socket, almost certainly FastCGI
+    ) {
     return $self->_run_fcgi;
   } elsif ($ENV{GATEWAY_INTERFACE}) {
     return $self->_run_cgi;
@@ -100,7 +103,11 @@ sub _run_test_request {
   Plack::Test::test_psgi(
     $self->to_psgi_app, sub { $response = shift->($request) }
   );
-  print $response->as_string;
+  print STDERR $response->status_line."\n";
+  print STDERR $response->headers_as_string("\n")."\n";
+  my $content = $response->content;
+  $content .= "\n" if length($content) and $content !~ /\n\z/;
+  print STDOUT $content if $content;
 }
 
 sub _run_cli {