use lib '.';
use t::Helper;
use Mojolicious::Lite;
plugin "CGI";
get
"/cgi-bin/#script_name/*path_info" => {path_info => ''},
sub {
my $c = shift;
my $script_name = $c->stash('script_name');
$script_name = "$script_name.cgi" unless $script_name =~ /\.cgi$/;
$c->cgi->run(script => File::Spec->rel2abs(cgi_script($script_name)));
};
my $t = Test::Mojo->new;
$t->get_ok('/cgi-bin/nope.cgi/foo')->status_is(500)->content_like(qr{Could not run CGI script});
$t->get_ok('/cgi-bin/env.cgi/some/path/info?query=123')->status_is(200)
->content_like(qr{^PATH_INFO=/some/path/info}m, 'PATH_INFO')
->content_like(qr{^QUERY_STRING=query=123}m, 'QUERY_STRING')
->content_like(qr{^SCRIPT_FILENAME=\S+/t/cgi-bin/env\.cgi$}m, 'SCRIPT_FILENAME')
->content_like(qr{^SCRIPT_NAME=/cgi-bin/env\.cgi$}m, 'SCRIPT_NAME');
$t->get_ok('/cgi-bin/env/some/path/info?query=123')->status_is(200)
->content_like(qr{^PATH_INFO=/some/path/info}m, 'PATH_INFO')
->content_like(qr{^QUERY_STRING=query=123}m, 'QUERY_STRING')
->content_like(qr{^SCRIPT_FILENAME=\S+/t/cgi-bin/env\.cgi$}m, 'SCRIPT_FILENAME')
->content_like(qr{^SCRIPT_NAME=/cgi-bin/env$}m, 'SCRIPT_NAME');
done_testing;