summaryrefslogtreecommitdiff
path: root/tests/runtests.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/runtests.pl')
-rw-r--r--tests/runtests.pl97
1 files changed, 97 insertions, 0 deletions
diff --git a/tests/runtests.pl b/tests/runtests.pl
new file mode 100644
index 000000000..662862e44
--- /dev/null
+++ b/tests/runtests.pl
@@ -0,0 +1,97 @@
+#!/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 $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 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.*`;
+