Catalyst-Runtime

 view release on metacpan or  search on metacpan

t/aggregate/unit_core_script_server.t  view on Meta::CPAN

sub testOption {
    my ($argstring, $resultarray) = @_;
    my $app = _build_testapp($argstring);
    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;
    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;
    $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);
    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';
    is_deeply $args, $resultarray, "is_deeply comparison of restarter args " . join(' ', @$argstring);
}

sub _build_testapp {
    my ($argstring, $resultarray) = @_;

    local @ARGV = @$argstring;
    local @TestAppToTestScripts::RUN_ARGS;
    my $i;
    try {
        $i = Catalyst::Script::Server->new_with_options(application_name => 'TestAppToTestScripts');
        pass "new_with_options " . join(' ', @$argstring);
    }
    catch {
        fail "new_with_options " . join(' ', @$argstring) . " " . $_;
    };
    ok $i;
    return $i;
}

# Returns the hash expected when no flags are passed
sub opthash {
    return {
        'pidfile' => undef,
        'fork' => 0,
        'follow_symlinks' => 0,
        'background' => 0,
        'keepalive' => 0,
        port => 3000,
        host => undef,
        @_,
    };
}

sub restartopthash {
    my $opthash = opthash(@_);
    my $val = {
        application_name => 'TestAppToTestScripts',
        port => '3000',
        debug => undef,
        host => undef,
        %$opthash,
    };
    return $val;
}

chdir($cwd);

1;



( run in 0.542 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )