App-Yath-Script

 view release on metacpan or  search on metacpan

t/unit/Script.t  view on Meta::CPAN

    $ENV{T2_HARNESS_INCLUDES} = '/fake/path1;/fake/path2';
    App::Yath::Script::inject_includes();
    is(\@INC, ['/fake/path1', '/fake/path2'], 'replaces @INC from env var');

    # Restore
    @INC = @orig_inc;
};

subtest 'parse_new_dev_libs' => sub {
    # No -D args, should return 0
    local @ARGV = ('test', '--verbose');
    is(App::Yath::Script::parse_new_dev_libs(), 0, 'returns 0 with no -D args');

    # Stops at --
    local @ARGV = ('--', '-D');
    is(App::Yath::Script::parse_new_dev_libs(), 0, 'stops at --');

    # Stops at ::
    local @ARGV = ('::', '-D');
    is(App::Yath::Script::parse_new_dev_libs(), 0, 'stops at ::');
};

subtest '_collect_dev_libs' => sub {
    is([App::Yath::Script::_collect_dev_libs()], [], 'empty input -> empty list');

    is(
        [App::Yath::Script::_collect_dev_libs('test', '--verbose', 'foo')],
        [],
        'no -D tokens -> empty list',

t/unit/Script/V0.t  view on Meta::CPAN

use strict;
use warnings;

use Test2::V0;

use App::Yath::Script::V0;

subtest 'do_begin parses --begin args' => sub {
    local @ARGV;
    my $output = '';
    {
        local *STDOUT;
        open(STDOUT, '>', \$output) or die "Cannot redirect STDOUT: $!";
        App::Yath::Script::V0->do_begin(
            argv        => ['--begin', 'hello', '--begin', 'world', 'foo', 'bar'],
            script      => $0,
            config      => undef,
            user_config => undef,
        );
    }

    is($output, "BEGIN: hello\nBEGIN: world\n", 'prints BEGIN args during do_begin');
    is(\@ARGV, ['foo', 'bar'], 'non-option args placed back in @ARGV');
};

subtest 'do_runtime echoes remaining args' => sub {
    local @ARGV = ('baz', 'qux');
    my $output = '';
    my $exit;
    {
        local *STDOUT;
        open(STDOUT, '>', \$output) or die "Cannot redirect STDOUT: $!";
        $exit = App::Yath::Script::V0->do_runtime();
    }

    is($output, "RUNTIME: baz\nRUNTIME: qux\n", 'prints RUNTIME args');
    is($exit, 0, 'returns 0');
};

subtest 'do_begin with no --begin args' => sub {
    local @ARGV;
    my $output = '';
    {
        local *STDOUT;
        open(STDOUT, '>', \$output) or die "Cannot redirect STDOUT: $!";
        App::Yath::Script::V0->do_begin(
            argv        => ['foo', 'bar'],
            script      => $0,
            config      => undef,
            user_config => undef,
        );
    }

    is($output, '', 'no BEGIN output when no --begin args');
    is(\@ARGV, ['foo', 'bar'], 'all args are non-option');
};

subtest 'do_runtime with empty @ARGV' => sub {
    local @ARGV;
    my $output = '';
    my $exit;
    {
        local *STDOUT;
        open(STDOUT, '>', \$output) or die "Cannot redirect STDOUT: $!";
        $exit = App::Yath::Script::V0->do_runtime();
    }

    is($output, '', 'no output with empty @ARGV');
    is($exit, 0, 'returns 0');



( run in 0.834 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )