diff options
Diffstat (limited to 'tests/runtests.pl')
-rw-r--r-- | tests/runtests.pl | 97 |
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.*`; + |