From 1a1209f91d1b16fc5e467864df8e9394690812e5 Mon Sep 17 00:00:00 2001 From: Kazuho Oku Date: Wed, 6 Jan 2010 12:26:37 +0900 Subject: [PATCH] try to find start_server from $PATH and $^X, or skip most tests (but not all) if not found --- Makefile.PL | 3 ++- t/00base.t | 51 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/Makefile.PL b/Makefile.PL index 3e0baaf..f9d4cee 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -7,6 +7,7 @@ requires 'Plack' => 0.9020; requires 'Parallel::Prefork' => 0.05; # since Plack does not intentionally requires P::Prefork required by Standalone::Prefork requires 'Server::Starter' => 0.05; -test_requires 'Test::TCP' => 0.15; +test_requires 'Test::More' => 0.88; +test_requires 'Test::TCP' => 0.15; WriteAll; diff --git a/t/00base.t b/t/00base.t index 8dfb9e4..5b2f3e3 100644 --- a/t/00base.t +++ b/t/00base.t @@ -1,34 +1,43 @@ use strict; use warnings; +use File::Basename (); use LWP::Simple (); use Test::TCP (); -use Test::More tests => 2; +use Test::More; BEGIN { use_ok('Server::Starter'); }; -my $port = Test::TCP::empty_port(); - -my $server_pid = fork(); -die "fork failed:$!" - unless defined $server_pid; -if ($server_pid == 0) { - # child == server - exec( - "start_server", - "--port=$port", - qw(-- plackup -s Standalone::Prefork::Server::Starter t/00base-hello.psgi), - ); - die "failed to launch server using start_server:$!"; +my ($start_server) = grep { -x $_ } map { "$_/start_server" } ( + File::Basename::dirname($^X), + split /:/, $ENV{PATH}, +); + +if ($start_server) { + my $port = Test::TCP::empty_port(); + my $server_pid = fork(); + die "fork failed:$!" + unless defined $server_pid; + if ($server_pid == 0) { + # child == server + exec( + $start_server, + "--port=$port", + qw(-- plackup -s Standalone::Prefork::Server::Starter t/00base-hello.psgi), + ); + die "failed to launch server using start_server:$!"; + } + sleep 1; + + is(LWP::Simple::get("http://127.0.0.1:$port/"), 'hello'); + + kill 'TERM', $server_pid; + while (wait == -1) {} +} else { + warn "could not find `start_server' next to $^X nor from \$PATH, skipping tests"; } -sleep 1; - -is(LWP::Simple::get("http://127.0.0.1:$port/"), 'hello'); - -kill 'TERM', $server_pid; - -while (wait == -1) {} +done_testing;