test_nbconvertapp.py
160 lines
| 5.8 KiB
| text/x-python
|
PythonLexer
Jonathan Frederic
|
r11477 | """ | ||
Contains tests for the nbconvertapp | ||||
""" | ||||
#----------------------------------------------------------------------------- | ||||
#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 | ||||
#----------------------------------------------------------------------------- | ||||
Jonathan Frederic
|
r11478 | import os | ||
Richard Everson
|
r11990 | import glob | ||
Jonathan Frederic
|
r11477 | from .base import TestsBase | ||
Jonathan Frederic
|
r11747 | from IPython.testing import decorators as dec | ||
Jonathan Frederic
|
r11547 | |||
#----------------------------------------------------------------------------- | ||||
# Constants | ||||
#----------------------------------------------------------------------------- | ||||
Jonathan Frederic
|
r11477 | #----------------------------------------------------------------------------- | ||
# Classes and functions | ||||
#----------------------------------------------------------------------------- | ||||
Jonathan Frederic
|
r11494 | class TestNbConvertApp(TestsBase): | ||
Jonathan Frederic
|
r11477 | """Collection of NbConvertApp tests""" | ||
Jonathan Frederic
|
r11478 | |||
def test_notebook_help(self): | ||||
""" | ||||
Will help show if no notebooks are specified? | ||||
""" | ||||
with self.create_temp_cwd(): | ||||
Jonathan Frederic
|
r11929 | out, err = self.call('nbconvert --log-level=0', raise_on_error=False) | ||
Paul Ivanov
|
r11828 | assert "see '--help-all'" in out | ||
Jonathan Frederic
|
r11478 | |||
def test_glob(self): | ||||
""" | ||||
Do search patterns work for notebook names? | ||||
""" | ||||
with self.create_temp_cwd(['notebook*.ipynb']): | ||||
Jonathan Frederic
|
r11929 | self.call('nbconvert --to="python" --notebooks=\'["*.ipynb"]\' --log-level=0') | ||
Jonathan Frederic
|
r11639 | assert os.path.isfile('notebook1.py') | ||
assert os.path.isfile('notebook2.py') | ||||
Jonathan Frederic
|
r11478 | |||
def test_glob_subdir(self): | ||||
""" | ||||
Do search patterns work for subdirectory notebook names? | ||||
""" | ||||
Paul Ivanov
|
r11828 | with self.create_temp_cwd(): | ||
Jonathan Frederic
|
r11478 | self.copy_files_to(['notebook*.ipynb'], 'subdir/') | ||
Jonathan Frederic
|
r11929 | self.call('nbconvert --to="python" --log-level=0 --notebooks=' | ||
Paul Ivanov
|
r11866 | '\'["%s"]\'' % os.path.join('subdir', '*.ipynb')) | ||
Jonathan Frederic
|
r11639 | assert os.path.isfile('notebook1.py') | ||
assert os.path.isfile('notebook2.py') | ||||
Jonathan Frederic
|
r11478 | |||
def test_explicit(self): | ||||
""" | ||||
Do explicit notebook names work? | ||||
""" | ||||
with self.create_temp_cwd(['notebook*.ipynb']): | ||||
Jonathan Frederic
|
r11929 | self.call('nbconvert --log-level=0 --to="python" --notebooks=' | ||
Paul Ivanov
|
r11866 | '\'["notebook2.ipynb"]\'') | ||
Jonathan Frederic
|
r11639 | assert not os.path.isfile('notebook1.py') | ||
assert os.path.isfile('notebook2.py') | ||||
Jonathan Frederic
|
r11478 | |||
Paul Ivanov
|
r11991 | @dec.onlyif_cmds_exist('pdflatex') | ||
@dec.onlyif_cmds_exist('pandoc') | ||||
Richard Everson
|
r11990 | def test_filename_spaces(self): | ||
""" | ||||
Paul Ivanov
|
r11991 | Generate PDFs with graphics if notebooks have spaces in the name? | ||
Richard Everson
|
r11990 | """ | ||
Paul Ivanov
|
r11993 | with self.create_temp_cwd(['notebook2.ipynb']): | ||
os.rename('notebook2.ipynb', 'notebook with spaces.ipynb') | ||||
o,e = self.call('nbconvert --log-level=0 --to="latex" "notebook with spaces"' | ||||
' --post="PDF" --PDFPostProcessor.verbose=True') | ||||
Richard Everson
|
r11990 | assert os.path.isfile('notebook with spaces.tex') | ||
Paul Ivanov
|
r11991 | assert os.path.isdir('notebook with spaces_files') | ||
assert os.path.isfile('notebook with spaces.pdf') | ||||
Richard Everson
|
r11990 | |||
Jonathan Frederic
|
r11752 | @dec.onlyif_cmds_exist('pdflatex') | ||
Paul Ivanov
|
r11833 | @dec.onlyif_cmds_exist('pandoc') | ||
Jonathan Frederic
|
r11747 | def test_post_processor(self): | ||
""" | ||||
Do post processors work? | ||||
""" | ||||
with self.create_temp_cwd(['notebook1.ipynb']): | ||||
Jonathan Frederic
|
r11929 | self.call('nbconvert --log-level=0 --to="latex" notebook1' | ||
Paul Ivanov
|
r11834 | ' --post="PDF" --PDFPostProcessor.verbose=True') | ||
Jonathan Frederic
|
r11747 | assert os.path.isfile('notebook1.tex') | ||
assert os.path.isfile('notebook1.pdf') | ||||
Paul Ivanov
|
r11833 | @dec.onlyif_cmds_exist('pandoc') | ||
Jonathan Frederic
|
r11745 | def test_template(self): | ||
Jonathan Frederic
|
r11740 | """ | ||
Jonathan Frederic
|
r11745 | Do export templates work? | ||
Jonathan Frederic
|
r11740 | """ | ||
Jonathan Frederic
|
r11767 | with self.create_temp_cwd(['notebook2.ipynb']): | ||
Jonathan Frederic
|
r11929 | self.call('nbconvert --log-level=0 --to=slides --notebooks=' | ||
Paul Ivanov
|
r11866 | '\'["notebook2.ipynb"]\' --template=reveal') | ||
Jonathan Frederic
|
r11767 | assert os.path.isfile('notebook2.slides.html') | ||
with open('notebook2.slides.html') as f: | ||||
Jonathan Frederic
|
r11740 | assert '/reveal.css' in f.read() | ||
Jonathan Frederic
|
r11478 | def test_glob_explicit(self): | ||
""" | ||||
Can a search pattern be used along with matching explicit notebook names? | ||||
""" | ||||
with self.create_temp_cwd(['notebook*.ipynb']): | ||||
Jonathan Frederic
|
r11929 | self.call('nbconvert --log-level=0 --to="python" --notebooks=' | ||
Paul Ivanov
|
r11866 | '\'["*.ipynb","notebook1.ipynb","notebook2.ipynb"]\'') | ||
Jonathan Frederic
|
r11639 | assert os.path.isfile('notebook1.py') | ||
assert os.path.isfile('notebook2.py') | ||||
Jonathan Frederic
|
r11478 | |||
def test_explicit_glob(self): | ||||
""" | ||||
Can explicit notebook names be used and then a matching search pattern? | ||||
""" | ||||
with self.create_temp_cwd(['notebook*.ipynb']): | ||||
Jonathan Frederic
|
r11929 | self.call('nbconvert --log-level=0 --to="python" --notebooks=' | ||
Paul Ivanov
|
r11866 | '\'["notebook1.ipynb","notebook2.ipynb","*.ipynb"]\'') | ||
Jonathan Frederic
|
r11639 | assert os.path.isfile('notebook1.py') | ||
assert os.path.isfile('notebook2.py') | ||||
Jonathan Frederic
|
r11478 | |||
def test_default_config(self): | ||||
""" | ||||
Does the default config work? | ||||
""" | ||||
with self.create_temp_cwd(['notebook*.ipynb', 'ipython_nbconvert_config.py']): | ||||
Jonathan Frederic
|
r11929 | self.call('nbconvert --log-level=0') | ||
Jonathan Frederic
|
r11639 | assert os.path.isfile('notebook1.py') | ||
assert not os.path.isfile('notebook2.py') | ||||
Jonathan Frederic
|
r11478 | |||
def test_override_config(self): | ||||
""" | ||||
Can the default config be overriden? | ||||
""" | ||||
Paul Ivanov
|
r11828 | with self.create_temp_cwd(['notebook*.ipynb', | ||
'ipython_nbconvert_config.py', | ||||
Jonathan Frederic
|
r11478 | 'override.py']): | ||
Jonathan Frederic
|
r11929 | self.call('nbconvert --log-level=0 --config="override.py"') | ||
Jonathan Frederic
|
r11639 | assert not os.path.isfile('notebook1.py') | ||
assert os.path.isfile('notebook2.py') | ||||