diff --git a/.gitignore b/.gitignore index 1632b9a..b2721d5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /pdfkit-0.4.1.tar.gz /pdfkit-0.5.0.zip +/pdfkit-0.6.1.tar.gz diff --git a/example.css b/6f1077dbae22863390915b6f69c8ec77f7c4a83f_example.css similarity index 100% rename from example.css rename to 6f1077dbae22863390915b6f69c8ec77f7c4a83f_example.css diff --git a/example.html b/6f1077dbae22863390915b6f69c8ec77f7c4a83f_example.html similarity index 100% rename from example.html rename to 6f1077dbae22863390915b6f69c8ec77f7c4a83f_example.html diff --git a/example2.css b/6f1077dbae22863390915b6f69c8ec77f7c4a83f_example2.css similarity index 100% rename from example2.css rename to 6f1077dbae22863390915b6f69c8ec77f7c4a83f_example2.css diff --git a/pdfkit-tests.py b/6f1077dbae22863390915b6f69c8ec77f7c4a83f_pdfkit-tests.py similarity index 76% rename from pdfkit-tests.py rename to 6f1077dbae22863390915b6f69c8ec77f7c4a83f_pdfkit-tests.py index f8225ed..78fc329 100644 --- a/pdfkit-tests.py +++ b/6f1077dbae22863390915b6f69c8ec77f7c4a83f_pdfkit-tests.py @@ -5,6 +5,11 @@ import sys import codecs import unittest + +if sys.version_info[0] == 2 and sys.version_info[1] == 7: + unittest.TestCase.assertRegex = unittest.TestCase.assertRegexpMatches + + #Prepend ../ to PYTHONPATH so that we can import PDFKIT form there. TESTS_ROOT = os.path.abspath(os.path.dirname(__file__)) sys.path.insert(0, os.path.realpath(os.path.join(TESTS_ROOT, '..'))) @@ -41,11 +46,66 @@ class TestPDFKitInitialization(unittest.TestCase): def test_options_parsing(self): r = pdfkit.PDFKit('html', 'string', options={'page-size': 'Letter'}) - self.assertTrue(r.options['--page-size']) + test_command = r.command('test') + idx = test_command.index('--page-size') # Raise exception in case of not found + self.assertTrue(test_command[idx+1] == 'Letter') def test_options_parsing_with_dashes(self): r = pdfkit.PDFKit('html', 'string', options={'--page-size': 'Letter'}) - self.assertTrue(r.options['--page-size']) + + test_command = r.command('test') + idx = test_command.index('--page-size') # Raise exception in case of not found + self.assertTrue(test_command[idx+1] == 'Letter') + + def test_options_parsing_with_tuple(self): + options = { + '--custom-header': [ + ('Accept-Encoding','gzip') + ] + } + r = pdfkit.PDFKit('html', 'string', options=options) + command = r.command() + idx1 = command.index('--custom-header') # Raise exception in case of not found + self.assertTrue(command[idx1 + 1] == 'Accept-Encoding') + self.assertTrue(command[idx1 + 2] == 'gzip') + + def test_options_parsing_with_tuple_no_dashes(self): + options = { + 'custom-header': [ + ('Accept-Encoding','gzip') + ] + } + r = pdfkit.PDFKit('html', 'string', options=options) + command = r.command() + idx1 = command.index('--custom-header') # Raise exception in case of not found + self.assertTrue(command[idx1 + 1] == 'Accept-Encoding') + self.assertTrue(command[idx1 + 2] == 'gzip') + + def test_repeatable_options(self): + roptions = { + '--page-size': 'Letter', + 'cookies': [ + ('test_cookie1','cookie_value1'), + ('test_cookie2','cookie_value2'), + ] + } + + r = pdfkit.PDFKit('html', 'string', options=roptions) + + test_command = r.command('test') + + idx1 = test_command.index('--page-size') # Raise exception in case of not found + self.assertTrue(test_command[idx1 + 1] == 'Letter') + + self.assertTrue(test_command.count('--cookies') == 2) + + idx2 = test_command.index('--cookies') + self.assertTrue(test_command[idx2 + 1] == 'test_cookie1') + self.assertTrue(test_command[idx2 + 2] == 'cookie_value1') + + idx3 = test_command.index('--cookies', idx2 + 2) + self.assertTrue(test_command[idx3 + 1] == 'test_cookie2') + self.assertTrue(test_command[idx3 + 2] == 'cookie_value2') def test_custom_configuration(self): conf = pdfkit.configuration() @@ -155,14 +215,18 @@ class TestPDFKitCommandGeneration(unittest.TestCase): } r = pdfkit.PDFKit('html', 'string', options=options, toc={'xsl-style-sheet': 'test.xsl'}) - self.assertEqual(r.command()[1 + len(options) * 2], 'toc') - self.assertEqual(r.command()[1 + len(options) * 2 + 1], '--xsl-style-sheet') + command = r.command() + + self.assertEqual(command[1 + len(options) * 2], 'toc') + self.assertEqual(command[1 + len(options) * 2 + 1], '--xsl-style-sheet') def test_cover_without_options(self): r = pdfkit.PDFKit('html', 'string', cover='test.html') - self.assertEqual(r.command()[1], 'cover') - self.assertEqual(r.command()[2], 'test.html') + command = r.command() + + self.assertEqual(command[1], 'cover') + self.assertEqual(command[2], 'test.html') def test_cover_with_options(self): options = { @@ -175,8 +239,10 @@ class TestPDFKitCommandGeneration(unittest.TestCase): } r = pdfkit.PDFKit('html', 'string', options=options, cover='test.html') - self.assertEqual(r.command()[1 + len(options) * 2], 'cover') - self.assertEqual(r.command()[1 + len(options) * 2 + 1], 'test.html') + command = r.command() + + self.assertEqual(command[1 + len(options) * 2], 'cover') + self.assertEqual(command[1 + len(options) * 2 + 1], 'test.html') def test_cover_and_toc(self): options = { @@ -191,6 +257,19 @@ class TestPDFKitCommandGeneration(unittest.TestCase): command = r.command() self.assertEqual(command[-7:], ['toc', '--xsl-style-sheet', 'test.xsl', 'cover', 'test.html', '-', '-']) + def test_cover_and_toc_cover_first(self): + options = { + 'page-size': 'Letter', + 'margin-top': '0.75in', + 'margin-right': '0.75in', + 'margin-bottom': '0.75in', + 'margin-left': '0.75in', + 'encoding': "UTF-8" + } + r = pdfkit.PDFKit('html', 'string', options=options, toc={'xsl-style-sheet': 'test.xsl'}, cover='test.html', cover_first=True) + command = r.command() + self.assertEqual(command[-7:], ['cover', 'test.html', 'toc', '--xsl-style-sheet', 'test.xsl', '-', '-']) + def test_outline_options(self): options = { 'outline': None, @@ -327,7 +406,7 @@ class TestPDFKitGeneration(unittest.TestCase): r.to_pdf() raised_exception = cm.exception - self.assertRegexpMatches(str(raised_exception), '^wkhtmltopdf exited with non-zero code 1. error:\nUnknown long argument --bad-option\r?\n') + self.assertRegex(str(raised_exception), '^wkhtmltopdf exited with non-zero code 1. error:\nUnknown long argument --bad-option\r?\n') if __name__ == "__main__": unittest.main() diff --git a/sources b/sources index 18e7ed3..376ecc3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (pdfkit-0.5.0.zip) = 7d310d36503305bf71065b9b96bb313cb21f40ad7c347554b6f7a82e3d7ee8a7e3122ce54a522fbbacb5c50f0ddb72c9827bc0b38aa1ebea891e5c91b2668841 +SHA512 (pdfkit-0.6.1.tar.gz) = b3ac1016d1c01a2a196f567b9b672caca10f564cc6a62122691d34c3cbbf143f6a846bfba26c3474e9c0296977f0d30c0b5af13b3321ab207b787df3cba12e5d