X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Faggregate%2Funit_core_script_server.t;h=c133e52df32f3744f8f6b9b467d1e2fc2f83fd20;hb=1a3dd976ad46b71f2eabd3230a393c7a1aa84b6e;hp=96b7a9fef23a39b0fba670ba11d5a6f3a4cef06f;hpb=b89d8b9875b08957089b2758fb3533bf8fc1e0c6;p=catagits%2FCatalyst-Runtime.git diff --git a/t/aggregate/unit_core_script_server.t b/t/aggregate/unit_core_script_server.t index 96b7a9f..c133e52 100644 --- a/t/aggregate/unit_core_script_server.t +++ b/t/aggregate/unit_core_script_server.t @@ -5,7 +5,7 @@ use FindBin qw/$Bin/; use lib "$Bin/../lib"; use Test::More; -use Test::Exception; +use Try::Tiny; use Catalyst::Script::Server; @@ -30,29 +30,51 @@ testOption( [ qw/--port 3001/ ], ['3001', undef, opthash()] ); local $ENV{TESTAPPTOTESTSCRIPTS_PORT} = 5000; testOption( [ qw// ], [5000, undef, opthash()] ); } +{ + local $ENV{CATALYST_PORT} = 5000; + testOption( [ qw// ], [5000, undef, opthash()] ); +} -# fork -f -fork --fork -f --fork -testOption( [ qw/--fork/ ], ['3000', undef, opthash(fork => 1)] ); -testOption( [ qw/-f/ ], ['3000', undef, opthash(fork => 1)] ); +if (try { require Starman; 1; }) { + # fork -f -fork --fork -f --fork + testOption( [ qw/--fork/ ], ['3000', undef, opthash(fork => 1)] ); + testOption( [ qw/-f/ ], ['3000', undef, opthash(fork => 1)] ); +} -# pidfile -pidfile --pid --pidfile -testOption( [ qw/--pidfile cat.pid/ ], ['3000', undef, opthash(pidfile => "cat.pid")] ); -testOption( [ qw/--pid cat.pid/ ], ['3000', undef, opthash(pidfile => "cat.pid")] ); +if (try { require MooseX::Daemonize; 1; }) { + # pidfile -pidfile --pid --pidfile + testOption( [ qw/--pidfile cat.pid/ ], ['3000', undef, opthash(pidfile => "cat.pid")] ); + testOption( [ qw/--pid cat.pid/ ], ['3000', undef, opthash(pidfile => "cat.pid")] ); +} -# keepalive -k -keepalive --keepalive -k --keepalive -testOption( [ qw/-k/ ], ['3000', undef, opthash(keepalive => 1)] ); -testOption( [ qw/--keepalive/ ], ['3000', undef, opthash(keepalive => 1)] ); +if (try { require Starman; 1; }) { + # keepalive -k -keepalive --keepalive -k --keepalive + testOption( [ qw/-k/ ], ['3000', undef, opthash(keepalive => 1)] ); + testOption( [ qw/--keepalive/ ], ['3000', undef, opthash(keepalive => 1)] ); +} # symlinks -follow_symlinks --sym --follow_symlinks -testOption( [ qw/--follow_symlinks/ ], ['3000', undef, opthash(follow_symlinks => 1)] ); +# testOption( [ qw/--sym/ ], ['3000', undef, opthash(follow_symlinks => 1)] ); +testOption( [ qw/--follow_symlinks/ ], ['3000', undef, opthash(follow_symlinks => 1)] ); -# background -background --bg --background -testOption( [ qw/--background/ ], ['3000', undef, opthash(background => 1)] ); -testOption( [ qw/--bg/ ], ['3000', undef, opthash(background => 1)] ); +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)] ); +} # restart -r -restart --restart -R --restart testRestart( ['-r'], restartopthash() ); +{ + local $ENV{TESTAPPTOTESTSCRIPTS_RELOAD} = 1; + testRestart( [], restartopthash() ); +} +{ + local $ENV{CATALYST_RELOAD} = 1; + testRestart( [], restartopthash() ); +} + # restart dly -rd -restartdelay --rd --restart_delay testRestart( ['-r', '--rd', 30], restartopthash(sleep_interval => 30) ); testRestart( ['-r', '--restart_delay', 30], restartopthash(sleep_interval => 30) ); @@ -66,22 +88,49 @@ testRestart( ['-r', '--restart_directory', 'root'], restartopthash(directories = testRestart( ['-r', '--rr', 'foo'], restartopthash(filter => qr/foo/) ); testRestart( ['-r', '--restart_regex', 'foo'], restartopthash(filter => qr/foo/) ); +local $ENV{TESTAPPTOTESTSCRIPTS_RESTARTER}; +local $ENV{CATALYST_RESTARTER}; +{ + is _build_testapp([])->restarter_class, 'Catalyst::Restarter', 'default restarter with no $ENV{CATALYST_RESTARTER}'; +} +{ + local $ENV{CATALYST_RESTARTER} = "CatalystX::Restarter::Other"; + is _build_testapp([])->restarter_class, $ENV{CATALYST_RESTARTER}, 'override restarter with $ENV{CATALYST_RESTARTER}'; +} +{ + local $ENV{TESTAPPTOTESTSCRIPTS_RESTARTER} = "CatalystX::Restarter::Other2"; + is _build_testapp([])->restarter_class, $ENV{TESTAPPTOTESTSCRIPTS_RESTARTER}, 'override restarter with $ENV{TESTAPPTOTESTSCRIPTS_RESTARTER}'; +} done_testing; sub testOption { my ($argstring, $resultarray) = @_; my $app = _build_testapp($argstring); - lives_ok { + try { $app->run; + } + catch { + fail $_; }; # First element of RUN_ARGS will be the script name, which we don't care about shift @TestAppToTestScripts::RUN_ARGS; - is_deeply \@TestAppToTestScripts::RUN_ARGS, $resultarray, "is_deeply comparison " . join(' ', @$argstring); + my $server = pop @TestAppToTestScripts::RUN_ARGS; + like ref($server), qr/^Plack::Handler/, 'Is a Plack::Handler'; + + my @run_args = @TestAppToTestScripts::RUN_ARGS; + $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; + is_deeply \@run_args, $resultarray, "is_deeply comparison " . join(' ', @$argstring); } sub testRestart { my ($argstring, $resultarray) = @_; my $app = _build_testapp($argstring); + ok $app->restart, 'App is in restart mode'; my $args = {$app->_restarter_args}; is_deeply delete $args->{argv}, $argstring, 'argv is arg string'; is ref(delete $args->{start_sub}), 'CODE', 'Closure to start app present'; @@ -94,9 +143,13 @@ sub _build_testapp { local @ARGV = @$argstring; local @TestAppToTestScripts::RUN_ARGS; my $i; - lives_ok { + try { $i = Catalyst::Script::Server->new_with_options(application_name => 'TestAppToTestScripts'); - } "new_with_options " . join(' ', @$argstring);; + pass "new_with_options " . join(' ', @$argstring); + } + catch { + fail "new_with_options " . join(' ', @$argstring) . " " . $_; + }; ok $i; return $i; } @@ -114,8 +167,13 @@ sub opthash { } sub restartopthash { - return { - follow_symlinks => 0, - @_, + my $opthash = opthash(@_); + my $val = { + application_name => 'TestAppToTestScripts', + port => '3000', + debug => undef, + host => undef, + %$opthash, }; + return $val; }