def test_xelatex_png(self): xelatex_doc_path = get_latex_file_dir("xelatex") for filename in os.listdir(xelatex_doc_path): file_path = os.path.join(xelatex_doc_path, filename) with self.subTest(filename=filename, test_name="xelatex"): tex_source = get_file_content(file_path).decode("utf-8") data_url = tex_to_img_converter( "xelatex", tex_source, "png").get_converted_data_url() self.assertIsNotNone(data_url) self.assertTrue(data_url.startswith("data:image/png"))
def test_pdfsvg(self): pdf2svg_doc_path = get_latex_file_dir("pdf2svg") for filename in os.listdir(pdf2svg_doc_path): file_path = os.path.join(pdf2svg_doc_path, filename) with self.subTest(filename=filename, test_name="xelatex_svg"): tex_source = get_file_content(file_path).decode("utf-8") data_url = unzipped_folder_to_pdf_converter( "xelatex", tex_source, "svg").get_converted_data_url() self.assertIsNotNone(data_url) self.assertTrue(data_url.startswith("data:image/svg"))
def test_more_than_one_pages_error(self): latex_doc_path = get_latex_file_dir("pdflatex_multilple_pages") for filename in os.listdir(latex_doc_path): file_path = os.path.join(latex_doc_path, filename) image_format = "png" with self.subTest(filename=filename, test_name="pdflatex", image_format=image_format): tex_source = get_file_content(file_path).decode("utf-8") with self.assertRaises(ImageConvertError): unzipped_folder_to_pdf_converter( "pdflatex", tex_source, image_format).get_converted_data_url()
def test_do_convert_success_but_no_images(self): doc_path = get_latex_file_dir("xelatex") filename = os.listdir(doc_path)[0] file_path = os.path.join(doc_path, filename) tex_source = get_file_content(file_path).decode("utf-8") with mock.patch( "latex.converter.get_number_of_pdf_file") as mock_get_n_images: mock_get_n_images.return_value = 0 with self.assertRaises(ImageConvertError) as cm: unzipped_folder_to_pdf_converter( "xelatex", tex_source, "png").get_converted_data_url() self.assertIn("No image was generated", str(cm.exception))
def test_get_data_url_error(self): doc_path = get_latex_file_dir("xelatex") filename = os.listdir(doc_path)[0] file_path = os.path.join(doc_path, filename) tex_source = get_file_content(file_path).decode("utf-8") expected_error = "some error" with mock.patch("latex.converter.get_data_url") as mock_get_data_url: mock_get_data_url.side_effect = RuntimeError(expected_error) with self.assertRaises(ImageConvertError) as cm: unzipped_folder_to_pdf_converter( "xelatex", tex_source, "svg").get_converted_data_url() self.assertIn(expected_error, str(cm.exception))
def test_compile_no_error_but_no_compiled_pdf_file(self): doc_path = get_latex_file_dir("xelatex") filename = os.listdir(doc_path)[0] file_path = os.path.join(doc_path, filename) tex_source = get_file_content(file_path).decode("utf-8") with mock.patch("latex.converter.Tex2ImgBase.compile_popen" ) as mock_compile_subprocess: mock_compile_subprocess.return_value = ["foo", "", 0] with self.assertRaises(UnknownCompileError) as cm: unzipped_folder_to_pdf_converter( "xelatex", tex_source, "png").get_converted_data_url() self.assertIn("No pdf file was generated.", str(cm.exception))
def test_convert_error(self): doc_path = get_latex_file_dir("xelatex") filename = os.listdir(doc_path)[0] file_path = os.path.join(doc_path, filename) tex_source = get_file_content(file_path).decode("utf-8") expected_error = "some error" with mock.patch("latex.converter.ImageConverter.convert_popen" ) as mock_compile_subprocess: mock_compile_subprocess.return_value = ["bar", expected_error, 1] with self.assertRaises(ImageConvertError) as cm: unzipped_folder_to_pdf_converter( "xelatex", tex_source, "svg").get_converted_data_url() self.assertIn(expected_error, str(cm.exception))
def test_imagemagick_convert_error(self): doc_path = get_latex_file_dir("xelatex") filename = os.listdir(doc_path)[0] file_path = os.path.join(doc_path, filename) tex_source = get_file_content(file_path).decode("utf-8") expected_error = "some ImageMagick error" with mock.patch( "latex.converter.wand_image.convert") as mock_im_convert: mock_im_convert.side_effect = RuntimeError(expected_error) with self.assertRaises(ImageConvertError) as cm: tex_to_img_converter("xelatex", tex_source, "png").get_converted_data_url() self.assertIn(expected_error, str(cm.exception))
def test_compile_error_no_log(self): doc_path = get_latex_file_dir("xelatex") filename = os.listdir(doc_path)[0] file_path = os.path.join(doc_path, filename) tex_source = get_file_content(file_path).decode("utf-8") expected_error = "some error" with mock.patch("latex.converter.Tex2ImgBase.compile_popen" ) as mock_compile_subprocess: mock_compile_subprocess.return_value = ["foo", expected_error, 1] with self.assertRaises(LatexCompileError) as cm: tex_to_img_converter("xelatex", tex_source, "png").get_converted_data_url() self.assertIn(expected_error, str(cm.exception))
def test_latex_png_tizk_got_svg(self): latex_doc_path = get_latex_file_dir("latex2png") for image_format in ["png"]: for filename in os.listdir(latex_doc_path): file_path = os.path.join(latex_doc_path, filename) with self.subTest(filename=filename, test_name="latex", image_format=image_format): tex_source = get_file_content(file_path).decode("utf-8") data_url = unzipped_folder_to_pdf_converter( "latex", tex_source, image_format).get_converted_data_url() self.assertIsNotNone(data_url) self.assertTrue( data_url.startswith("data:image/%s" % image_format))
def get_post_data(file_dir="xelatex", **kwargs): doc_folder_path = get_latex_file_dir(file_dir) file_path = os.path.join(doc_folder_path, os.listdir(doc_folder_path)[0]) with open(file_path, encoding="utf-8") as f: file_data = f.read() data = { "compiler": "xelatex", "tex_source": file_data, "image_format": "png", } data.update(kwargs) return data
def test_pdflatex(self): pdflatex_doc_path = get_latex_file_dir("pdflatex") for image_format in ["png", "svg"]: for filename in os.listdir(pdflatex_doc_path): file_path = os.path.join(pdflatex_doc_path, filename) with self.subTest(filename=filename, test_name="pdflatex", image_format=image_format): tex_source = get_file_content(file_path).decode("utf-8") data_url = tex_to_img_converter( "pdflatex", tex_source, image_format, ).get_converted_data_url() self.assertIsNotNone(data_url) self.assertTrue( data_url.startswith("data:image/%s" % image_format))
def get_post_data(file_dir="xelatex", **kwargs): as_text_field = kwargs.pop("as_text_field", False) doc_path = get_latex_file_dir(file_dir) file_path = os.path.join(doc_path, os.listdir(doc_path)[0]) with open(file_path, encoding="utf-8") as f: file_data = f.read() data = {"compiler_format": "xelatex2png", "tex_key": ""} if not as_text_field: data["latex_file"] = SimpleUploadedFile("xelatex.tex", file_data.encode(), content_type="text/plain") else: data["latex_code"] = file_data data.update(kwargs) return data