X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Faggregate%2Funit_core_script_server.t;h=c4d3c5bf80cb1d136cde583b48d360cc5e49528a;hb=a0b5065e3dd43fea2ca17f4f2ae7cbe1958057d4;hp=3df98a5d85cc2b61463a5bcad89ff6d4753a32a6;hpb=ed7e95f2d3f172591a3f45bc8f243a4ff511f775;p=catagits%2FCatalyst-Runtime.git diff --git a/t/aggregate/unit_core_script_server.t b/t/aggregate/unit_core_script_server.t index 3df98a5..c4d3c5b 100644 --- a/t/aggregate/unit_core_script_server.t +++ b/t/aggregate/unit_core_script_server.t @@ -4,11 +4,16 @@ use warnings; use FindBin qw/$Bin/; use lib "$Bin/../lib"; +use File::Temp qw/ tempdir /; +use Cwd; use Test::More; use Try::Tiny; use Catalyst::Script::Server; +my $cwd = getcwd; +chdir(tempdir(CLEANUP => 1)); + my $testopts; # Test default (no opts/args behaviour) @@ -20,22 +25,22 @@ testOption( [ qw// ], ['3000', undef, opthash()] ); # help -? -help --help -? --help # debug -d -debug --debug -d --debug # host -host --host --host -testOption( [ qw/--host testhost/ ], ['3000', 'testhost', opthash()] ); -testOption( [ qw/-h testhost/ ], ['3000', 'testhost', opthash()] ); +testOption( [ qw/--host testhost/ ], ['3000', 'testhost', opthash(host => 'testhost')] ); +testOption( [ qw/-h testhost/ ], ['3000', 'testhost', opthash(host => 'testhost')] ); # port -p -port --port -l --listen -testOption( [ qw/-p 3001/ ], ['3001', undef, opthash()] ); -testOption( [ qw/--port 3001/ ], ['3001', undef, opthash()] ); +testOption( [ qw/-p 3001/ ], ['3001', undef, opthash(port => 3001)] ); +testOption( [ qw/--port 3001/ ], ['3001', undef, opthash(port => 3001)] ); { local $ENV{TESTAPPTOTESTSCRIPTS_PORT} = 5000; - testOption( [ qw// ], [5000, undef, opthash()] ); + testOption( [ qw// ], [5000, undef, opthash(port => 5000)] ); } { local $ENV{CATALYST_PORT} = 5000; - testOption( [ qw// ], [5000, undef, opthash()] ); + testOption( [ qw// ], [5000, undef, opthash(port => 5000)] ); } -if (try { require Starman; 1; }) { +if (try { require Plack::Handler::Starman; 1; }) { # fork -f -fork --fork -f --fork testOption( [ qw/--fork/ ], ['3000', undef, opthash(fork => 1)] ); testOption( [ qw/-f/ ], ['3000', undef, opthash(fork => 1)] ); @@ -47,7 +52,7 @@ if (try { require MooseX::Daemonize; 1; }) { testOption( [ qw/--pid cat.pid/ ], ['3000', undef, opthash(pidfile => "cat.pid")] ); } -if (try { require Starman; 1; }) { +if (try { require Plack::Handler::Starman; 1; }) { # keepalive -k -keepalive --keepalive -k --keepalive testOption( [ qw/-k/ ], ['3000', undef, opthash(keepalive => 1)] ); testOption( [ qw/--keepalive/ ], ['3000', undef, opthash(keepalive => 1)] ); @@ -60,8 +65,8 @@ testOption( [ qw/--follow_symlinks/ ], ['3000', undef, opthash(follow_symlinks = if (try { require MooseX::Daemonize; 1; }) { # background -background --bg --background - testOption( [ qw/--background/ ], ['3000', undef, opthash(background => 1)] ); - testOption( [ qw/--bg/ ], ['3000', undef, opthash(background => 1)] ); + testBackgroundOptionWithFork( [ qw/--background/ ]); + testBackgroundOptionWithFork( [ qw/--bg/ ]); } # restart -r -restart --restart -R --restart @@ -113,6 +118,7 @@ sub testOption { fail $_; }; # First element of RUN_ARGS will be the script name, which we don't care about + shift @TestAppToTestScripts::RUN_ARGS; my $server = pop @TestAppToTestScripts::RUN_ARGS; like ref($server), qr/^Plack::Handler/, 'Is a Plack::Handler'; @@ -121,12 +127,34 @@ sub testOption { $run_args[-1]->{pidfile} = $run_args[-1]->{pidfile}->file->stringify if scalar(@run_args) && $run_args[-1]->{pidfile}; - # Mangle argv into the options.. $resultarray->[-1]->{argv} = $argstring; + $resultarray->[-1]->{extra_argv} = []; is_deeply \@run_args, $resultarray, "is_deeply comparison " . join(' ', @$argstring); } +sub testBackgroundOptionWithFork { + my ($argstring) = @_; + + ## First, make sure we can get an app + my $app = _build_testapp($argstring); + + ## Sorry, don't really fork since this cause trouble in Test::Aggregate + $app->meta->add_around_method_modifier('daemon_fork', sub { return; }); + + try { + $app->run; + } + catch { + fail $_; + }; + + ## Check a few args + is_deeply $app->{ARGV}, $argstring; + is $app->port, '3000'; + is($app->{background}, 1); +} + sub testRestart { my ($argstring, $resultarray) = @_; my $app = _build_testapp($argstring); @@ -162,6 +190,8 @@ sub opthash { 'follow_symlinks' => 0, 'background' => 0, 'keepalive' => 0, + port => 3000, + host => undef, @_, }; } @@ -178,5 +208,7 @@ sub restartopthash { return $val; } +chdir($cwd); + 1;