App-jl
view release on metacpan or search on metacpan
t/01_basic.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use Capture::Tiny qw/capture/;
use JSON qw/encode_json/;
use Encode qw//;
use App::jl;
sub jl_test {
my ($name, $src_json, $opt, $test_ref, $do_note) = @_;
my $jl = App::jl->new($opt ? @{$opt} : ());
$jl->{__current_orig_line} = $src_json;
my $output = $jl->_run_line;
note $name if $do_note;
note $output if $do_note;
if (ref $test_ref eq 'CODE') {
$test_ref->($output, $src_json);
}
}
my $JSON = encode_json({
foo => encode_json({
bar => encode_json({
baz => encode_json({
hoge => 123,
}),
}),
}),
});
note $JSON;
jl_test('BASIC', $JSON, [], sub {
my ($output, $src) = @_;
ok $output =~ m!foo!;
});
{
my $like_json_not_json = '{"not":"JSON"';
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 },
( run in 1.008 second using v1.01-cache-2.11-cpan-39bf76dae61 )