Factor restarter arg assembly out into it's own routine for ease of testing. Use...
[catagits/Catalyst-Runtime.git] / t / aggregate / unit_core_script_server.t
1 use strict;
2 use warnings;
3
4 use FindBin qw/$Bin/;
5 use lib "$Bin/../lib";
6
7 use Test::More;
8 use Test::Exception;
9
10 use Catalyst::Script::Server;
11
12 my $testopts;
13
14 # Test default (no opts/args behaviour)
15 testOption( [ qw// ], ['3000', 'localhost', opthash()] );
16
17 # Old version supports long format opts with either one or two dashes.  New version only supports two.
18 #                Old                       New
19 # help           -? -help --help           -? --help
20 # debug          -d -debug --debug         -d --debug
21 # host           -host --host              --host
22 testOption( [ qw/--host testhost/ ], ['3000', 'testhost', opthash()] );
23 testOption( [ qw/-h testhost/ ], ['3000', 'testhost', opthash()] );
24
25 # port           -p -port --port           -l --listen
26 testOption( [ qw/-p 3001/ ], ['3001', 'localhost', opthash()] );
27 testOption( [ qw/--port 3001/ ], ['3001', 'localhost', opthash()] );
28
29 # fork           -f -fork --fork           -f --fork
30 testOption( [ qw/--fork/ ], ['3000', 'localhost', opthash(fork => 1)] );
31 testOption( [ qw/-f/ ], ['3000', 'localhost', opthash(fork => 1)] );
32
33 # pidfile        -pidfile                  --pid --pidfile
34 testOption( [ qw/--pidfile cat.pid/ ], ['3000', 'localhost', opthash(pidfile => "cat.pid")] );
35 testOption( [ qw/--pid cat.pid/ ], ['3000', 'localhost', opthash(pidfile => "cat.pid")] );
36
37 # keepalive      -k -keepalive --keepalive -k --keepalive
38 testOption( [ qw/-k/ ], ['3000', 'localhost', opthash(keepalive => 1)] );
39 testOption( [ qw/--keepalive/ ], ['3000', 'localhost', opthash(keepalive => 1)] );
40
41 # symlinks       -follow_symlinks          --sym --follow_symlinks
42 testOption( [ qw/--follow_symlinks/ ], ['3000', 'localhost', opthash(follow_symlinks => 1)] );
43 testOption( [ qw/--sym/ ], ['3000', 'localhost', opthash(follow_symlinks => 1)] );
44
45 # background     -background               --bg --background
46 testOption( [ qw/--background/ ], ['3000', 'localhost', opthash(background => 1)] );
47 testOption( [ qw/--bg/ ], ['3000', 'localhost', opthash(background => 1)] );
48
49 # Restart stuff requires a threaded perl, apparently.
50 # restart        -r -restart --restart     -R --restart
51 # restart dly    -rd -restartdelay         --rdel --restart_delay
52 # restart dir    -restartdirectory         --rdir --restart_directory
53 # restart regex  -rr -restartregex         --rxp --restart_regex
54
55 done_testing;
56
57 sub testOption {
58     my ($argstring, $resultarray) = @_;
59
60     local @ARGV = @$argstring;
61     local @TestAppToTestScripts::RUN_ARGS;
62     lives_ok {
63         Catalyst::Script::Server->new_with_options(application_name => 'TestAppToTestScripts')->run;
64     } "new_with_options";
65     # First element of RUN_ARGS will be the script name, which we don't care about
66     shift @TestAppToTestScripts::RUN_ARGS;
67     is_deeply \@TestAppToTestScripts::RUN_ARGS, $resultarray, "is_deeply comparison";
68 }
69
70 # Returns the hash expected when no flags are passed
71 sub opthash {
72     return {
73         'pidfile' => undef,
74         'fork' => 0,
75         'follow_symlinks' => 0,
76         'background' => 0,
77         'keepalive' => 0,
78         @_,
79     };
80 }