pdf2htmlEX/pdf2htmlEX/test/testOutput

207 lines
5.8 KiB
Bash
Executable File

#!/bin/sh
# This shell script checks that pdf2htmlEX does not crash, and produces
# correct files. Do not check the content of the files.
# We use a shell script to implement the python3 test_output.py so that we
# do not need to install any extra packages to test this functionality.
# This is how we run pdf2htmlEX on a particular file, and arguments.
#
function runPdf2htmlEX {
# collect the arguments
#
export LAST_TEST_NAME="$*"
#
pdfFileName=$1
#
shift
arguments=$*
# clear out the TMPDIR
#
rm -rf $PDF2HTMLEX_TMPDIR
mkdir -p $PDF2HTMLEX_TMPDIR
#
# now run pdf2htmlEX to produce the output files
#
echo "test: [$LAST_TEST_NAME]"
echo "---"
$PDF2HTMLEX_PATH \
--data-dir $PDF2HTMLEX_DATDIR \
--dest-dir $PDF2HTMLEX_TMPDIR \
$PDF2HTMLEX_TEST_DIR/test_output/$pdfFileName \
$arguments
}
# This is how we test for expected output files
#
function hasExpectedFiles {
filesFound="true"
for anExpectedFile in $1 ; do
if ! test -r $PDF2HTMLEX_TMPDIR/$anExpectedFile ; then
echo "NOT FOUND [$PDF2HTMLEX_TMPDIR/$anExpectedFile]"
filesFound="false"
fi
done
if test $filesFound = "true" ; then
echo "SUCCESS: $LAST_TEST_NAME" >> testOutputResults
else
echo "FAILURE: $LAST_TEST_NAME" >> testOutputResults
fi
echo "---"
echo ""
}
# This is how we copy a file omitting lines between '#TEST_IGNORE_BEGIN'
# and '#TEST_IGNORE_END' (we pipe the file in via stdin and save it via
# stdout)
#
function copy_TEST_IGNORE_file {
skipLine=echo
while IFS= read -r line ; do
if echo $line | grep -q "^#TEST_IGNORE_BEGIN" ; then
skipLine=true
elif echo $line | grep -q "^#TEST_IGNORE_END" ; then
skipLine=echo
else
$skipLine "$line"
fi
done
}
if test -z "$PDF2HTMLEX_PATH" ; then
echo "PANIC: we do not know where to find the pdf2htmlEX executable"
exit 1
fi
if test -z "$PDF2HTMLEX_DATDIR" ; then
export PDF2HTMLEX_DATDIR=/tmp/pdf2htmlex/dat
fi
mkdir -p $PDF2HTMLEX_DATDIR
if test -z "$PDF2HTMLEX_TMPDIR" ; then
export PDF2HTMLEX_TMPDIR=/tmp/pdf2htmlex/tmp
fi
mkdir -p $PDF2HTMLEX_TMPDIR
if test -z "$PDF2HTMLEX_TEST_DIR" ; then
export PDF2HTMLEX_TEST_DIR=.
fi
mkdir -p $PDF2HTMLEX_TEST_DIR
# Make sure any previous testOutputResults are cleared
#
rm -f testOutputResults
# setup the correct data files
#
cat $PDF2HTMLEX_TEST_DIR/../share/manifest | \
copy_TEST_IGNORE_file > $PDF2HTMLEX_DATDIR/manifest
cp $PDF2HTMLEX_TEST_DIR/../share/base.min.css $PDF2HTMLEX_DATDIR
cp $PDF2HTMLEX_TEST_DIR/../test/fancy.min.css $PDF2HTMLEX_DATDIR
# Do the tests
#
echo ""
echo "-------------------------------------------------------"
echo "running testOutput tests (simple non-browser tests)"
echo "-------------------------------------------------------"
echo ""
export LAST_TEST_NAME="unknown"
#
runPdf2htmlEX '1-page.pdf' --version
runPdf2htmlEX '1-page.pdf'
hasExpectedFiles '1-page.html'
runPdf2htmlEX '2-pages.pdf'
hasExpectedFiles '2-pages.html'
runPdf2htmlEX '1-page.pdf' 'foo.html'
hasExpectedFiles 'foo.html'
runPdf2htmlEX '2-pages.pdf' 'foo.html'
hasExpectedFiles 'foo.html'
runPdf2htmlEX '1-page.pdf' '--split-pages=1'
hasExpectedFiles '1-page.html 1-page1.page'
runPdf2htmlEX '3-pages.pdf' '--split-pages=1'
hasExpectedFiles '3-pages.html 3-pages1.page 3-pages2.page 3-pages3.page'
runPdf2htmlEX '1-page.pdf' '--split-pages=1 --page-filename=foo.xyz'
hasExpectedFiles '1-page.html foo1.xyz'
runPdf2htmlEX '3-pages.pdf' '--split-pages=1 --page-filename=foo.xyz'
hasExpectedFiles '3-pages.html foo1.xyz foo2.xyz foo3.xyz'
runPdf2htmlEX '3-pages.pdf' '--split-pages=1 --page-filename=fo%do.xyz'
hasExpectedFiles '3-pages.html fo1o.xyz fo2o.xyz fo3o.xyz'
runPdf2htmlEX '3-pages.pdf' '--split-pages=1 --page-filename=fo%03do.xyz'
hasExpectedFiles '3-pages.html fo001o.xyz fo002o.xyz fo003o.xyz'
runPdf2htmlEX '3-pages.pdf' '--split-pages=1 --page-filename=f%do%do.xyz'
hasExpectedFiles '3-pages.html f1o%do.xyz f2o%do.xyz f3o%do.xyz'
runPdf2htmlEX '3-pages.pdf' '--split-pages=1 --page-filename=f%soo.xyz'
hasExpectedFiles '3-pages.html f%soo1.xyz f%soo2.xyz f%soo3.xyz'
runPdf2htmlEX '3-pages.pdf' '--split-pages=1 --page-filename=f%poo.xyz'
hasExpectedFiles '3-pages.html f%poo1.xyz f%poo2.xyz f%poo3.xyz'
runPdf2htmlEX '3-pages.pdf' '--split-pages=1 --page-filename=f%noo.xyz'
hasExpectedFiles '3-pages.html f%noo1.xyz f%noo2.xyz f%noo3.xyz'
runPdf2htmlEX '3-pages.pdf' '--split-pages=1 --page-filename=f%%oo.xyz'
hasExpectedFiles '3-pages.html f%%oo1.xyz f%%oo2.xyz f%%oo3.xyz'
runPdf2htmlEX '3-pages.pdf' '--split-pages=1 --page-filename=f%%o%do.xyz'
hasExpectedFiles '3-pages.html f%%o1o.xyz f%%o2o.xyz f%%o3o.xyz'
runPdf2htmlEX '3-pages.pdf' '--split-pages=1 --page-filename=fo%do%%.xyz'
hasExpectedFiles '3-pages.html fo1o%%.xyz fo2o%%.xyz fo3o%%.xyz'
runPdf2htmlEX '3-pages.pdf' '--split-pages=1 --page-filename=f%02%doo.xyz'
hasExpectedFiles '3-pages.html f%021oo.xyz f%022oo.xyz f%023oo.xyz'
runPdf2htmlEX '1-page.pdf' '--split-pages=1 --page-filename=foo'
hasExpectedFiles '1-page.html foo1'
runPdf2htmlEX '2-pages.pdf' 'foo%d.html'
hasExpectedFiles 'foo%d.html'
runPdf2htmlEX '2-pages.pdf' 'foo%p.html'
hasExpectedFiles 'foo%p.html'
runPdf2htmlEX '2-pages.pdf' 'foo%n.html'
hasExpectedFiles 'foo%n.html'
runPdf2htmlEX '2-pages.pdf' 'foo%%.html'
hasExpectedFiles 'foo%%.html'
runPdf2htmlEX 'issue501' '--split-pages=1 --embed-css=0'
hasExpectedFiles ''
# Let the user know what the testOutputResults were
#
echo ""
echo "-------------------------------------------------------"
echo "testOutput results:"
echo "-------------------------------------------------------"
cat testOutputResults
echo "-------------------------------------------------------"
echo ""
# fail the script IF we find the work 'FAILURE' in the testOutputResults
#
if grep FAILURE testOutputResults ; then
exit 1
fi