"""Tests for ScriptExporter""" # Copyright (c) IPython Development Team. # Distributed under the terms of the Modified BSD License. import os import sys from nbformat import v4 import nbconvert from .base import ExportersTestsBase from ..script import ScriptExporter class TestScriptExporter(ExportersTestsBase): """Tests for ScriptExporter""" exporter_class = ScriptExporter def test_constructor(self): """Construct ScriptExporter""" e = self.exporter_class() def test_export(self): """ScriptExporter can export something""" (output, resources) = self.exporter_class().from_filename(self._get_notebook()) assert len(output) > 0 def test_export_python(self): """delegate to custom exporter from language_info""" exporter = self.exporter_class() pynb = v4.new_notebook() (output, resources) = self.exporter_class().from_notebook_node(pynb) self.assertNotIn('# coding: utf-8', output) pynb.metadata.language_info = { 'name': 'python', 'mimetype': 'text/x-python', 'nbconvert_exporter': 'python', } (output, resources) = self.exporter_class().from_notebook_node(pynb) self.assertIn('# coding: utf-8', output) def test_export_config_transfer(self): """delegate config to custom exporter from language_info""" nb = v4.new_notebook() nb.metadata.language_info = { 'name': 'python', 'mimetype': 'text/x-python', 'nbconvert_exporter': 'python', } exporter = self.exporter_class() exporter.from_notebook_node(nb) assert exporter._exporters['python'] != exporter assert exporter._exporters['python'].config == exporter.config def test_script_exporter_entrypoint(): nb = v4.new_notebook() nb.metadata.language_info = { 'name': 'dummy', 'mimetype': 'text/x-dummy', } p = os.path.join(os.path.dirname(nbconvert.tests.__file__), 'exporter_entrypoint') sys.path.insert(0, p) try: output, _ = ScriptExporter().from_notebook_node(nb) assert output == 'dummy-script-exported' finally: sys.path.remove(p)