App-jl

 view release on metacpan or  search on metacpan

t/01_basic.t  view on Meta::CPAN

    jl_test('LIKE_JSON_NOT_JSON', $like_json_not_json, [], sub {
        my ($output, $src) = @_;

        is $output, $like_json_not_json;
    });
}

jl_test('SORT_KEYS', encode_json({ z => 1, b => 1, a => 1 }), [], sub {
    my ($output, $src) = @_;

    ok $output =~ m!a.*b.*z!sm;
});

jl_test('JA', encode_json({ aiko => 'è©©' }), [], sub {
    my ($output, $src) = @_;

    my $s = Encode::encode('utf8', 'è©©');

    ok $output =~ m!"aiko"\s*:\s*"$s"!;
});

jl_test('NO_PRETTY', $JSON, ['--no-pretty'], sub {
    my ($output, $src) = @_;

    ok $output =~ m!foo.*bar.*baz.*hoge!;
});

{
    my $src_json = encode_json({ foo => 'bar' });
    my $json_in_log = encode_json({ message => qq|[05/09/2019 23:51:51]\t[warn]\t$src_json\n| });
    jl_test('X', $json_in_log, ['-x'], sub {
        my ($output, $src) = @_;

        ok $output =~ m!\Q"[warn]",!;
    });
}

{
    my $src_json = encode_json({ foo => 'bar' });
    my $json_in_log = encode_json({ message => qq|[05/09/2019 23:51:51] foo, bar, baz \n$src_json\n| });
    jl_test('XX', $json_in_log, ['-xx'], sub {
        my ($output, $src) = @_;

        ok $output =~ m!"bar",! && $output =~ m!"baz"! && $output =~ m!"foo"\s*:\s*"bar"!;
    });
}

{
    my $src_json = encode_json({ foo => 'bar' });
    my $json_in_log = encode_json({ message => qq|[05/09/2019 23:51:51](warn)<server> \n$src_json\n| });
    jl_test('XXX', $json_in_log, ['-xxx'], sub {
        my ($output, $src) = @_;

        ok $output =~ m!"\Q(warn)"! && $output =~ m!"<server>"! && $output =~ m!"foo"\s*:\s*"bar"!;
    });
}

{
    my $src_json = encode_json([
        { created    => 1560026367 },
        { updated    => 1560026367.123 },
        { created_at => '1560026367' },
        { time       => '1560026367123' },
        { unixtime   => 1560026367123 },
        { date       => '1560026367.123' },
        { ts         => 1560026367 },
    ]);
    my $json_in_log = encode_json({ message => qq|[05/09/2019 23:51:51] (warn) <server>\n$src_json\n| });
    jl_test('XXXX', $json_in_log, ['-xxxx', '--timestamp-key', 'ts'], sub {
        my ($output, $src) = @_;

        ok $output =~ m!"\Q(warn)"! && $output =~ m!"<server>"! && $output !~ m!1560026367!;
    });
}

jl_test('NO_CONTENT_LINE', "\t \r\n\t\n", [], sub {
    my ($output, $src) = @_;

    is $output, undef;
});

STDIN: {
    open my $IN, '<', \$JSON;
    local *STDIN = *$IN;
    my ($stdout, $stderr) = capture {
        App::jl->new->run;
    };
    close $IN;
    ok $stdout !~ m!\\!;
    if (0) {
        note 'STDIN';
        note $stdout;
    }
}

STDERR: {
    open my $IN, '<', \$JSON;
    local *STDIN = *$IN;
    my ($stdout, $stderr) = capture {
        App::jl->new('--stderr')->run;
    };
    close $IN;
    is $stdout, '';
    ok $stderr;
    if (0) {
        note 'STDERR';
        note $stdout;
        note $stderr;
    }
}

STDIN_NOT_JSON: {
    my $str = 'aikoの詩。';
    open my $IN, '<', \$str;
    local *STDIN = *$IN;
    my ($stdout, $stderr) = capture {
        App::jl->new->run;
    };
    close $IN;
    is $stdout, $str;
    if (0) {



( run in 0.695 second using v1.01-cache-2.11-cpan-ceb78f64989 )