},
);
+ $psgi_app = Plack::Middleware::Conditional->wrap(
+ $psgi_app,
+ builder => sub {
+ my ($to_wrap) = @_;
+ return sub {
+ my ($env) = @_;
+
+ my @script_name = split(m!/!, $env->{PATH_INFO});
+ my @path_translated = split(m!/|\\\\?!, $env->{PATH_TRANSLATED});
+ my @path_info;
+
+ while ($script_name[$#script_name] eq $path_translated[$#path_translated]) {
+ pop(@path_translated);
+ unshift(@path_info, pop(@script_name));
+ }
+
+ unshift(@path_info, '', '');
+
+ $env->{PATH_INFO} = join('/', @path_info);
+ $env->{SCRIPT_NAME} = join('/', @script_name);
+
+ return $to_wrap->($env);
+ };
+ },
+ condition => sub {
+ my ($env) = @_;
+ my $server = $env->{SERVER_SOFTWARE};
+ return unless $server;
+ return $server =~ /IIS\/[6-9]\.[0-9]/ ? 1 : 0;
+ },
+ );
+
return $psgi_app;
}
use Test::More;
-plan skip_all => 'Known broken currently';
-
-eval "use FCGI";
-plan skip_all => 'FCGI required' if $@;
-
-plan tests => 2;
-
-require Catalyst::Engine::FastCGI;
+use Catalyst;
my %env = (
'SCRIPT_NAME' => '/koo/blurb',
'HTTP_HOST' => '127.0.0.1:83'
);
-Catalyst::Engine::FastCGI->_fix_env(\%env);
+sub fix_env {
+ my (%input_env) = @_;
+
+ my $mangled_env;
+ my $app = Catalyst->_wrapped_legacy_psgi_app(sub {
+ my ($env) = @_;
+ $mangled_env = $env;
+ return [ 200, ['Content-Type' => 'text/plain'], [''] ];
+ });
+
+ $app->({ %input_env, 'psgi.url_scheme' => 'http' });
+ return %{ $mangled_env };
+}
+
+my %fixed_env = fix_env(%env);
-is($env{PATH_INFO}, '//blurb', 'check PATH_INFO');
-is($env{SCRIPT_NAME}, '/koo', 'check SCRIPT_NAME');
+is($fixed_env{PATH_INFO}, '//blurb', 'check PATH_INFO');
+is($fixed_env{SCRIPT_NAME}, '/koo', 'check SCRIPT_NAME');
+done_testing;