1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
#!/bin/perl -w
$verbose = 1;
my $diffexists = `which diff`;
if ($diffexists eq "") { die "diff not found in path.\n"; }
my $script = "./pandoc";
use Getopt::Long;
GetOptions("script=s" => \$script);
unless (-f $script) { die "$script does not exist.\n"; }
unless (-x $script) { die "$script is not executable.\n"; }
print "Writer tests:\n";
my @writeformats = ("html", "smart.html", "latex", "rst", "rtf", "markdown", "native"); # s5 separately
my @readformats = ("latex", "native"); # handle html,markdown & rst separately
my $source = "testsuite.native";
sub test_results
{
my $testname = $_[0];
my $output = $_[1];
my $norm = $_[2];
my $diffoutput = `diff --strip-trailing-cr $output $norm`;
if ($diffoutput eq "")
{
print "PASSED\n";
}
else
{
print "FAILED\n";
if ($verbose) { print $diffoutput; }
}
}
foreach my $format (@writeformats)
{
$options = "";
if ($format =~ /smart\./)
{
$options = "-S ";
}
my $extension = $format;
$extension =~ s/smart\.//g;
print "Testing $format writer...";
`$script -r native -w $extension $options -s $source > tmp.$extension`;
test_results("$format writer", "tmp.$extension", "writer.$format");
}
print "Testing docbook writer...";
# remove HTML block tests, as this produces invalid docbook...
`sed -e '/^, Header 1 \\[Str "HTML",Space,Str "Blocks"\\]/,/^, HorizontalRule/d' testsuite.native | $script -r native -w docbook -s > tmp.docbook`;
test_results("docbook writer", "tmp.docbook", "writer.docbook");
print "Testing s5 writer (basic)...";
`$script -r native -w s5 -s s5.native > tmp.html`;
test_results("s5 writer (basic)", "tmp.html", "s5.basic.html");
print "Testing s5 writer (fancy)...";
`$script -r native -w s5 -s -S -m -i s5.native > tmp.html`;
test_results("s5 writer (fancy)", "tmp.html", "s5.fancy.html");
print "Testing html fragment...";
`$script -r native -w html s5.native > tmp.html`;
test_results("html fragment", "tmp.html", "s5.fragment.html");
print "Testing -H -B -A -c options...";
`$script -r native -s -w html -H insert -B insert -A insert -c main.css s5.native > tmp.html`;
test_results("-B, -A, -H, -c options", "tmp.html", "s5.inserts.html");
print "\nReader tests:\n";
print "Testing markdown reader...";
`$script -r markdown -w native -s testsuite.txt > tmp.native`;
test_results("markdown reader", "tmp.native", "testsuite.native");
print "Testing rst reader...";
`$script -r rst -w native -s rst-reader.rst > tmp.native`;
test_results("rst reader", "tmp.native", "rst-reader.native");
print "Testing html reader...";
`$script -r html -w native -s html-reader.html > tmp.native`;
test_results("html reader", "tmp.native", "html-reader.native");
print "\nReader tests (roundtrip: X -> native -> X -> native):\n";
foreach my $format (@readformats)
{
print "testing $format reader...";
`$script -r $format -w native -s -R writer.$format > tmp1.native`;
`$script -r native -w $format -s -R tmp1.native | $script -r $format -w native -s -R - > tmp2.native`;
test_results("$format reader", "tmp1.native", "tmp2.native");
}
`rm tmp?.*`;
`rm tmp.*`;
|