"""Tests for the svg2pdf preprocessor""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. from unittest.mock import patch from nbformat import v4 as nbformat from ...tests.utils import onlyif_cmds_exist from ..svg2pdf import SVG2PDFPreprocessor from .base import PreprocessorTestsBase class Testsvg2pdf(PreprocessorTestsBase): """Contains test functions for svg2pdf.py""" simple_svg = """ """ def build_notebook(self): """Build a reveal slides notebook in memory for use with tests. Overrides base in PreprocessorTestsBase""" outputs = [ nbformat.new_output(output_type="display_data", data={"image/svg+xml": self.simple_svg}) ] cells = [nbformat.new_code_cell(source="", execution_count=1, outputs=outputs)] return nbformat.new_notebook(cells=cells) def build_preprocessor(self, **kwargs): """Make an instance of a preprocessor""" preprocessor = SVG2PDFPreprocessor(**kwargs) preprocessor.enabled = True return preprocessor def test_constructor(self): """Can a SVG2PDFPreprocessor be constructed?""" self.build_preprocessor() @onlyif_cmds_exist("inkscape") def test_output(self): """Test the output of the SVG2PDFPreprocessor""" nb = self.build_notebook() res = self.build_resources() preprocessor = self.build_preprocessor() nb, res = preprocessor(nb, res) self.assertIn("application/pdf", nb.cells[0].outputs[0].data) @onlyif_cmds_exist("inkscape") @patch("subprocess.Popen") def test_inkscape_version_default(self, mock_popen): mock_popen().communicate.return_value = (b"Inkscape 0.92.3 (2405546, 2018-03-11)", b"") mock_popen().returncode = 0 preprocessor = self.build_preprocessor() assert preprocessor.inkscape_version == "0.92.3" def test_inkscape_pre_v1_command(self): preprocessor = self.build_preprocessor(inkscape="fake-inkscape", inkscape_version="0.92.3") assert preprocessor.command == [ "fake-inkscape", "--without-gui", "--export-pdf={to_filename}", "{from_filename}", ] def test_inkscape_v1_command(self): preprocessor = self.build_preprocessor( inkscape="fake-inkscape", inkscape_version="1.0beta2" ) assert preprocessor.command == [ "fake-inkscape", "--export-filename={to_filename}", "{from_filename}", ]