use strict;
use Cwd;
use File::Spec;
use File::Temp;
use LWP::UserAgent;
use Test::More;
use Test::TCP qw(empty_port);
plan skip_all => "developer only" unless -e '.git';
sub write_file($$){
my ( $path, $content ) = @_;
open my $out, '>', $path or die "$path: $!";
print $out $content;
close $out;
}
my $tmpdir = File::Temp::tempdir( CLEANUP => 1 );
my $psgi_file = File::Spec->catfile($tmpdir, 'app.psgi');
write_file $psgi_file, qq/my \$app = sub {return [200, [], ["hello world"]]}\n/;
my $port = empty_port();
my $pid = fork;
if ($pid == 0) {
close STDERR;
exec($^X, '-Ilib', 'bin/plackup', '-p', $port, '--path', '/app/', '-a', $psgi_file) or die $@;
} else {
$SIG{INT} = 'IGNORE';
sleep 1;
my $ua = LWP::UserAgent->new;
my $res = $ua->get("http://localhost:$port/");
is $res->code, 404;
$res = $ua->get("http://localhost:$port/app/");
is $res->code, 200;
is $res->content, 'hello world';
kill 'INT', $pid;
wait;
}
done_testing;