##// END OF EJS Templates
Catch errors after our then()s, instead of in parallel with them (this missing exceptions)...
Catch errors after our then()s, instead of in parallel with them (this missing exceptions) When an error is thrown in a then() success handler, it doesn't call the same then()'s error handler. I also made all of the utils.reject handlers verbose to aid in debugging.

File last commit:

r18596:2d590459
r19080:cbc9dc59
Show More
test_nbbase.py
101 lines | 3.2 KiB | text/x-python | PythonLexer
# coding: utf-8
"""Tests for the Python API for composing notebook elements"""
import nose.tools as nt
from IPython.nbformat.validator import isvalid, validate, ValidationError
from ..nbbase import (
NotebookNode, nbformat,
new_code_cell, new_markdown_cell, new_notebook,
new_output, new_raw_cell,
)
def test_empty_notebook():
nb = new_notebook()
nt.assert_equal(nb.cells, [])
nt.assert_equal(nb.metadata, NotebookNode())
nt.assert_equal(nb.nbformat, nbformat)
def test_empty_markdown_cell():
cell = new_markdown_cell()
nt.assert_equal(cell.cell_type, 'markdown')
nt.assert_equal(cell.source, '')
def test_markdown_cell():
cell = new_markdown_cell(u'* Søme markdown')
nt.assert_equal(cell.source, u'* Søme markdown')
def test_empty_raw_cell():
cell = new_raw_cell()
nt.assert_equal(cell.cell_type, u'raw')
nt.assert_equal(cell.source, '')
def test_raw_cell():
cell = new_raw_cell('hi')
nt.assert_equal(cell.source, u'hi')
def test_empty_code_cell():
cell = new_code_cell('hi')
nt.assert_equal(cell.cell_type, 'code')
nt.assert_equal(cell.source, u'hi')
def test_empty_display_data():
output = new_output('display_data')
nt.assert_equal(output.output_type, 'display_data')
def test_empty_stream():
output = new_output('stream')
nt.assert_equal(output.output_type, 'stream')
nt.assert_equal(output.name, 'stdout')
nt.assert_equal(output.text, '')
def test_empty_execute_result():
output = new_output('execute_result', execution_count=1)
nt.assert_equal(output.output_type, 'execute_result')
mimebundle = {
'text/plain': "some text",
"application/json": {
"key": "value"
},
"image/svg+xml": 'ABCDEF',
"application/octet-stream": 'ABC-123',
"application/vnd.foo+bar": "Some other stuff",
}
def test_display_data():
output = new_output('display_data', mimebundle)
for key, expected in mimebundle.items():
nt.assert_equal(output.data[key], expected)
def test_execute_result():
output = new_output('execute_result', mimebundle, execution_count=10)
nt.assert_equal(output.execution_count, 10)
for key, expected in mimebundle.items():
nt.assert_equal(output.data[key], expected)
def test_error():
o = new_output(output_type=u'error', ename=u'NameError',
evalue=u'Name not found', traceback=[u'frame 0', u'frame 1', u'frame 2']
)
nt.assert_equal(o.output_type, u'error')
nt.assert_equal(o.ename, u'NameError')
nt.assert_equal(o.evalue, u'Name not found')
nt.assert_equal(o.traceback, [u'frame 0', u'frame 1', u'frame 2'])
def test_code_cell_with_outputs():
cell = new_code_cell(execution_count=10, outputs=[
new_output('display_data', mimebundle),
new_output('stream', text='hello'),
new_output('execute_result', mimebundle, execution_count=10),
])
nt.assert_equal(cell.execution_count, 10)
nt.assert_equal(len(cell.outputs), 3)
er = cell.outputs[-1]
nt.assert_equal(er.execution_count, 10)
nt.assert_equal(er['output_type'], 'execute_result')
def test_stream():
output = new_output('stream', name='stderr', text='hello there')
nt.assert_equal(output.name, 'stderr')
nt.assert_equal(output.text, 'hello there')