2
use Test::More 0.96; # for subtests
6
plan skip_all => 'pandoc executable required' unless pandoc;
7
# XXX: does Test::More/IPC::Run3 lack write permissions?
9
my $args = ['-t' => 'markdown'];
11
subtest 'pandoc( ... )' => sub {
13
is pandoc({ in => \'*.*', out => \$html }), 0, 'pandoc({in =>..., out=>...}';
14
is $html, "<p><em>.</em></p>\n", 'markdown => html';
17
pandoc -f => 'html', -t => 'markdown', { in => \$html, out => \$md };
18
like $md, qr/^\*\.\*/, 'html => markdown';
21
subtest 'run(@args, \%opts)' => sub {
23
my %opts = ( in => \$in, out => \my($out), err => \my($err) );
24
lives_ok { pandoc->run( @$args, \%opts ) }, 'run';
25
like $out, qr!^\s*foo\s*$!, 'stdout';
27
is $err //= "", "", 'stderr';
29
lives_ok { pandoc->run( 'README.md', \%opts ) }, 'run with filename';
32
subtest '->run(\@args, \%opts)' => sub {
34
my %opts = ( in => \$in, out => \my($out), err => \my($err) );
35
lives_ok { pandoc->run( $args, \%opts ) }, 'run';
36
like $out, qr!^\s*foo\s*$!, 'stdout';
37
is $err //= "", "", 'stderr';
40
subtest '->run(\@args, %opts)' => sub {
42
my %opts = ( in => \$in, out => \my($out), err => \my($err) );
43
lives_ok { pandoc->run( $args, %opts ) }, 'run';
44
like $out, qr!^\s*foo\s*$!, 'stdout';
45
is $err //= "", "", 'stderr';
48
subtest '->run([], %opts)' => sub {
50
my %opts = ( in => \$in, out => \my($out), err => \my($err) );
51
lives_ok { pandoc->run( [], %opts ) }, 'run';
52
like $out, qr!<p>foo</p>!, 'stdout';
53
is $err //= "", "", 'stderr';
56
subtest 'run(%opts)' => sub {
58
lives_ok { pandoc in => \"# hi", out => \$out };
59
is $out, "<h1 id=\"hi\">hi</h1>\n", 'run( %opts )';
62
subtest '->run(\@args, qw[odd length list])' => sub {
64
my %opts = ( in => \$in, out => \my($out), err => \my($err) );
65
throws_ok { pandoc->run( $args, %opts, 'foo' ) }
66
qr!^\QToo many or ambiguous arguments!, 'run';
69
subtest '->run(\@args, ..., \%opts)' => sub {
71
my %opts = ( in => \$in, out => \my($out), err => \my($err) );
72
throws_ok { pandoc->run( $args, qw[foo, bar], \%opts ) }
73
qr!^\QToo many or ambiguous arguments!, 'run';