test_script.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. """Tests for ScriptExporter"""
  2. # Copyright (c) IPython Development Team.
  3. # Distributed under the terms of the Modified BSD License.
  4. import os
  5. import sys
  6. from nbformat import v4
  7. import nbconvert
  8. from .base import ExportersTestsBase
  9. from ..script import ScriptExporter
  10. class TestScriptExporter(ExportersTestsBase):
  11. """Tests for ScriptExporter"""
  12. exporter_class = ScriptExporter
  13. def test_constructor(self):
  14. """Construct ScriptExporter"""
  15. e = self.exporter_class()
  16. def test_export(self):
  17. """ScriptExporter can export something"""
  18. (output, resources) = self.exporter_class().from_filename(self._get_notebook())
  19. assert len(output) > 0
  20. def test_export_python(self):
  21. """delegate to custom exporter from language_info"""
  22. exporter = self.exporter_class()
  23. pynb = v4.new_notebook()
  24. (output, resources) = self.exporter_class().from_notebook_node(pynb)
  25. self.assertNotIn('# coding: utf-8', output)
  26. pynb.metadata.language_info = {
  27. 'name': 'python',
  28. 'mimetype': 'text/x-python',
  29. 'nbconvert_exporter': 'python',
  30. }
  31. (output, resources) = self.exporter_class().from_notebook_node(pynb)
  32. self.assertIn('# coding: utf-8', output)
  33. def test_export_config_transfer(self):
  34. """delegate config to custom exporter from language_info"""
  35. nb = v4.new_notebook()
  36. nb.metadata.language_info = {
  37. 'name': 'python',
  38. 'mimetype': 'text/x-python',
  39. 'nbconvert_exporter': 'python',
  40. }
  41. exporter = self.exporter_class()
  42. exporter.from_notebook_node(nb)
  43. assert exporter._exporters['python'] != exporter
  44. assert exporter._exporters['python'].config == exporter.config
  45. def test_script_exporter_entrypoint():
  46. nb = v4.new_notebook()
  47. nb.metadata.language_info = {
  48. 'name': 'dummy',
  49. 'mimetype': 'text/x-dummy',
  50. }
  51. p = os.path.join(os.path.dirname(nbconvert.tests.__file__), 'exporter_entrypoint')
  52. sys.path.insert(0, p)
  53. try:
  54. output, _ = ScriptExporter().from_notebook_node(nb)
  55. assert output == 'dummy-script-exported'
  56. finally:
  57. sys.path.remove(p)