"""Base TestCase class for testing Exporters""" #----------------------------------------------------------------------------- # Copyright (c) 2013, the IPython Development Team. # # Distributed under the terms of the Modified BSD License. # # The full license is in the file COPYING.txt, distributed with this software. #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- # Imports #----------------------------------------------------------------------------- import os from IPython.testing.decorators import onlyif_any_cmd_exists from ...tests.base import TestsBase #----------------------------------------------------------------------------- # Class #----------------------------------------------------------------------------- all_raw_mimetypes = { 'text/x-python', 'text/markdown', 'text/html', 'text/restructuredtext', 'text/latex', } class ExportersTestsBase(TestsBase): """Contains base test functions for exporters""" exporter_class = None should_include_raw = None def _get_notebook(self, nb_name='notebook2.ipynb'): return os.path.join(self._get_files_path(), nb_name) @onlyif_any_cmd_exists('nodejs', 'node', 'pandoc') def test_raw_cell_inclusion(self): """test raw cell inclusion based on raw_mimetype metadata""" if self.should_include_raw is None: return exporter = self.exporter_class() (output, resources) = exporter.from_filename(self._get_notebook('rawtest.ipynb')) for inc in self.should_include_raw: self.assertIn('raw %s' % inc, output, "should include %s" % inc) self.assertIn('no raw_mimetype metadata', output) for exc in all_raw_mimetypes.difference(self.should_include_raw): self.assertNotIn('raw %s' % exc, output, "should exclude %s" % exc) self.assertNotIn('never be included', output)