##// END OF EJS Templates
Fix #4777 and #7887...
Fix #4777 and #7887 The function in charge of actually converting cursor offset to CodeMirror line number and character number was actually crashing when the cursor was at the last character (loop until undefined, then access length of variable, which is undefined). This was hiding a bug in which when you would completer to a single completion pressing tab after as-you-type filtering, the completion would be completed twice. The logic that was supposed to detect whether or not all completions had a common prefix was actually faulty as the common prefix used to be a string but was then changed to an object. Hence the logic to check whether or not there was actually a common prefix was always true, even for empty string, leading to the deletion of the line (replace by '') in some cases.

File last commit:

r18605:9867311c
r20538:ae7f6d6a
Show More
test_export.py
90 lines | 2.4 KiB | text/x-python | PythonLexer
"""
Module with tests for export.py
"""
# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import os
from IPython import nbformat
from .base import ExportersTestsBase
from ..export import *
from ..python import PythonExporter
class TestExport(ExportersTestsBase):
"""Contains test functions for export.py"""
def test_export_wrong_name(self):
"""
Is the right error thrown when a bad template name is used?
"""
try:
export_by_name('not_a_name', self._get_notebook())
except ExporterNameError as e:
pass
def test_export_filename(self):
"""
Can a notebook be exported by filename?
"""
(output, resources) = export_by_name('python', self._get_notebook())
assert len(output) > 0
def test_export_nbnode(self):
"""
Can a notebook be exported by a notebook node handle?
"""
with open(self._get_notebook(), 'r') as f:
notebook = nbformat.read(f, 4)
(output, resources) = export_by_name('python', notebook)
assert len(output) > 0
def test_export_filestream(self):
"""
Can a notebook be exported by a filesteam?
"""
with open(self._get_notebook(), 'r') as f:
(output, resources) = export_by_name('python', f)
assert len(output) > 0
def test_export_using_exporter(self):
"""
Can a notebook be exported using an instanciated exporter?
"""
(output, resources) = export(PythonExporter(), self._get_notebook())
assert len(output) > 0
def test_export_using_exporter_class(self):
"""
Can a notebook be exported using an exporter class type?
"""
(output, resources) = export(PythonExporter, self._get_notebook())
assert len(output) > 0
def test_export_resources(self):
"""
Can a notebook be exported along with a custom resources dict?
"""
(output, resources) = export(PythonExporter, self._get_notebook(), resources={})
assert len(output) > 0
def test_no_exporter(self):
"""
Is the right error thrown if no exporter is provided?
"""
try:
(output, resources) = export(None, self._get_notebook())
except TypeError:
pass