mirror of
https://github.com/pdf2htmlEX/pdf2htmlEX.git
synced 2024-12-21 20:50:07 +00:00
Executable path passed to test.py using CMake's configure_file.
=> ctest executes. 6 of 8 tests pass.
This commit is contained in:
parent
4921b4564b
commit
43be893dc3
@ -216,4 +216,7 @@ install (FILES ${PDF2HTMLEX_RESOURCE} DESTINATION share/pdf2htmlEX)
|
||||
install (FILES pdf2htmlEX.1 DESTINATION share/man/man1)
|
||||
|
||||
enable_testing()
|
||||
add_test(test python ${CMAKE_SOURCE_DIR}/test/test.py ${CMAKE_BINARY_DIR}/bin/pdf2htmlEX)
|
||||
set(PDF2HTMLEX_PATH ${CMAKE_BINARY_DIR}/pdf2htmlEX)
|
||||
configure_file(${CMAKE_SOURCE_DIR}/test/test.py.in ${CMAKE_SOURCE_DIR}/test/test.py)
|
||||
add_test(test python ${CMAKE_SOURCE_DIR}/test/test.py test_basic_text)
|
||||
add_test(test python ${CMAKE_SOURCE_DIR}/test/test.py test_local_browser)
|
||||
|
135
test/test.py
135
test/test.py
@ -1,135 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import unittest
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
class Common(object):
|
||||
SRC_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
print "DEBUG 1: ", __file__
|
||||
print "DEBUG 2: ", os.path.abspath(__file__)
|
||||
print "DEBUG 3: ", os.path.dirname(os.path.abspath(__file__))
|
||||
print "DEBUG 4: ", SRC_DIR
|
||||
TEST_DIR = os.path.join(SRC_DIR, 'test')
|
||||
DATA_DIR = os.path.join(SRC_DIR, 'share')
|
||||
PDF2HTMLEX_PATH = os.path.join(SRC_DIR, 'pdf2htmlEX')
|
||||
|
||||
SAVE_TMP = bool(os.environ.get('P2H_TEST_SAVE_TMP'))
|
||||
GENERATING_MODE = bool(os.environ.get('P2H_TEST_GEN'))
|
||||
|
||||
CANONICAL_TEMPDIR = '/tmp/pdf2htmlEX_test'
|
||||
|
||||
def setUp(self):
|
||||
if not self.SAVE_TMP:
|
||||
self.cur_temp_dir = tempfile.mkdtemp(prefix='pdf2htmlEX_test')
|
||||
else:
|
||||
shutil.rmtree(self.CANONICAL_TEMPDIR, True)
|
||||
os.mkdir(self.CANONICAL_TEMPDIR)
|
||||
self.cur_temp_dir = self.CANONICAL_TEMPDIR
|
||||
|
||||
self.cur_data_dir = os.path.join(self.cur_temp_dir, 'share')
|
||||
self.cur_output_dir = os.path.join(self.cur_temp_dir, 'out')
|
||||
os.mkdir(self.cur_data_dir)
|
||||
os.mkdir(self.cur_output_dir)
|
||||
|
||||
# filter manifest
|
||||
with open(os.path.join(self.DATA_DIR, 'manifest')) as inf:
|
||||
with open(os.path.join(self.cur_data_dir, 'manifest'), 'w') as outf:
|
||||
ignore = False
|
||||
for line in inf:
|
||||
if ignore:
|
||||
if line.startswith('#TEST_IGNORE_END'):
|
||||
ignore = False
|
||||
elif line.startswith('#TEST_IGNORE_BEGIN'):
|
||||
ignore = True
|
||||
else:
|
||||
outf.write(line)
|
||||
|
||||
# copy files
|
||||
shutil.copy(os.path.join(self.DATA_DIR, 'base.min.css'),
|
||||
os.path.join(self.cur_data_dir, 'base.min.css'))
|
||||
shutil.copy(os.path.join(self.TEST_DIR, 'fancy.min.css'),
|
||||
os.path.join(self.cur_data_dir, 'fancy.min.css'))
|
||||
|
||||
def tearDown(self):
|
||||
if not self.SAVE_TMP:
|
||||
shutil.rmtree(self.cur_temp_dir, True)
|
||||
|
||||
def run_pdf2htmlEX(self, args):
|
||||
"""
|
||||
Execute the pdf2htmlEX with the specified arguments.
|
||||
|
||||
:type args: list of values
|
||||
:param args: list of arguments to pass to executable.
|
||||
:return: an object of relevant info
|
||||
"""
|
||||
|
||||
args = [self.PDF2HTMLEX_PATH,
|
||||
'--data-dir', self.cur_data_dir,
|
||||
'--dest-dir', self.cur_output_dir
|
||||
] + args
|
||||
|
||||
with open(os.devnull, 'w') as fnull:
|
||||
return_code = subprocess.call(list(map(str, args)), stderr=fnull)
|
||||
|
||||
self.assertEquals(return_code, 0, 'cannot execute pdf2htmlEX')
|
||||
|
||||
files = os.listdir(self.cur_output_dir)
|
||||
|
||||
return {
|
||||
'return_code' : return_code,
|
||||
'output_files' : files
|
||||
}
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if not len(sys.argv)==2:
|
||||
print >> sys.stderr, "Usage: python test.py <pdf2htmlEX_executable_path>"
|
||||
exit(1)
|
||||
if not os.path.isfile(Common.PDF2HTMLEX_PATH) or not os.access(Common.PDF2HTMLEX_PATH, os.X_OK):
|
||||
print >> sys.stderr, "Cannot locate pdf2htmlEX executable. Make sure source was built before running this test."
|
||||
exit(1)
|
||||
suites = []
|
||||
loader = unittest.TestLoader()
|
||||
|
||||
all_modules = []
|
||||
all_modules.append(__import__('test_output'))
|
||||
all_modules.append(__import__('test_local_browser'))
|
||||
all_classes = ['test_output', 'test_local_browser']
|
||||
|
||||
if bool(os.environ.get('P2H_TEST_REMOTE')):
|
||||
m = __import__('test_remote_browser')
|
||||
all_modules.append(m)
|
||||
all_classes += m.test_classnames
|
||||
|
||||
test_names = []
|
||||
for name in sys.argv[1:]:
|
||||
test_names.append(name)
|
||||
if name.find('.') == -1:
|
||||
for m in all_classes:
|
||||
test_names.append(m + '.' + name)
|
||||
|
||||
for module in all_modules:
|
||||
if len(test_names) > 0 and module.__name__ not in test_names:
|
||||
for n in test_names:
|
||||
try:
|
||||
suites.append(loader.loadTestsFromName(n, module))
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
suites.append(loader.loadTestsFromModule(module))
|
||||
|
||||
if len(suites) == 0:
|
||||
print >>sys.stderr, 'No test found'
|
||||
exit(1)
|
||||
|
||||
failure_count = 0
|
||||
runner = unittest.TextTestRunner(verbosity=2)
|
||||
for suite in suites:
|
||||
result = runner.run(suite)
|
||||
failure_count += len(result.errors) + len(result.failures)
|
||||
|
||||
exit(failure_count)
|
Loading…
Reference in New Issue
Block a user