##// END OF EJS Templates
use Tuple, not nonexistent CTuple
use Tuple, not nonexistent CTuple

File last commit:

r15420:f97d9dd3
r15471:a5e8082e
Show More
test_nbmanager.py
245 lines | 9.3 KiB | text/x-python | PythonLexer
MinRK
test nbmanager.copy_notebook
r13136 # coding: utf-8
MinRK
add tests for notebook_dir validation
r7637 """Tests for the notebook manager."""
Thomas Kluyver
Convert print statements to print function calls...
r13348 from __future__ import print_function
MinRK
add tests for notebook_dir validation
r7637
import os
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
from tornado.web import HTTPError
MinRK
add tests for notebook_dir validation
r7637 from unittest import TestCase
from tempfile import NamedTemporaryFile
from IPython.utils.tempdir import TemporaryDirectory
from IPython.utils.traitlets import TraitError
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 from IPython.html.utils import url_path_join
MinRK
add tests for notebook_dir validation
r7637
Brian E. Granger
Fixing minor import error.
r10661 from ..filenbmanager import FileNotebookManager
Paul Ivanov
adding tests for named_notebook_path...
r13025 from ..nbmanager import NotebookManager
MinRK
add tests for notebook_dir validation
r7637
Brian E. Granger
Get the existing tests working.
r15079
Paul Ivanov
adding tests for named_notebook_path...
r13025 class TestFileNotebookManager(TestCase):
MinRK
add tests for notebook_dir validation
r7637
def test_nb_dir(self):
with TemporaryDirectory() as td:
Paul Ivanov
clean up of get_os_path and its tests...
r13034 fm = FileNotebookManager(notebook_dir=td)
self.assertEqual(fm.notebook_dir, td)
MinRK
add tests for notebook_dir validation
r7637
def test_missing_nb_dir(self):
with TemporaryDirectory() as td:
nbdir = os.path.join(td, 'notebook', 'dir', 'is', 'missing')
Brian Granger
Refactoring notebook managers and adding Azure backed storage....
r8180 self.assertRaises(TraitError, FileNotebookManager, notebook_dir=nbdir)
MinRK
add tests for notebook_dir validation
r7637
def test_invalid_nb_dir(self):
with NamedTemporaryFile() as tf:
Brian Granger
Refactoring notebook managers and adding Azure backed storage....
r8180 self.assertRaises(TraitError, FileNotebookManager, notebook_dir=tf.name)
MinRK
add tests for notebook_dir validation
r7637
Zachary Sailer
handle path separators with os.sep and add tests...
r13032 def test_get_os_path(self):
# full filesystem path should be returned with correct operating system
# separators.
with TemporaryDirectory() as td:
MinRK
reorganize who knows what about paths...
r15420 nbdir = td
Paul Ivanov
clean up of get_os_path and its tests...
r13034 fm = FileNotebookManager(notebook_dir=nbdir)
MinRK
reorganize who knows what about paths...
r15420 path = fm._get_os_path('test.ipynb', '/path/to/notebook/')
Paul Ivanov
clean up of get_os_path and its tests...
r13034 rel_path_list = '/path/to/notebook/test.ipynb'.split('/')
fs_path = os.path.join(fm.notebook_dir, *rel_path_list)
self.assertEqual(path, fs_path)
fm = FileNotebookManager(notebook_dir=nbdir)
MinRK
reorganize who knows what about paths...
r15420 path = fm._get_os_path('test.ipynb')
Paul Ivanov
clean up of get_os_path and its tests...
r13034 fs_path = os.path.join(fm.notebook_dir, 'test.ipynb')
self.assertEqual(path, fs_path)
fm = FileNotebookManager(notebook_dir=nbdir)
MinRK
reorganize who knows what about paths...
r15420 path = fm._get_os_path('test.ipynb', '////')
Paul Ivanov
clean up of get_os_path and its tests...
r13034 fs_path = os.path.join(fm.notebook_dir, 'test.ipynb')
self.assertEqual(path, fs_path)
Zachary Sailer
handle path separators with os.sep and add tests...
r13032
Paul Ivanov
adding tests for named_notebook_path...
r13025 class TestNotebookManager(TestCase):
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
def make_dir(self, abs_path, rel_path):
"""make subdirectory, rel_path is the relative path
to that directory from the location where the server started"""
os_path = os.path.join(abs_path, rel_path)
try:
os.makedirs(os_path)
except OSError:
Brian E. Granger
Adding dashboard navigation tests for dir browsing.
r15080 print("Directory already exists: %r" % os_path)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 def test_create_notebook(self):
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 with TemporaryDirectory() as td:
# Test in root directory
nm = FileNotebookManager(notebook_dir=td)
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.create_notebook()
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 assert isinstance(model, dict)
self.assertIn('name', model)
self.assertIn('path', model)
self.assertEqual(model['name'], 'Untitled0.ipynb')
Thomas Kluyver
Fix check of notebook path
r13088 self.assertEqual(model['path'], '')
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
# Test in sub-directory
sub_dir = '/foo/'
self.make_dir(nm.notebook_dir, 'foo')
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.create_notebook(None, sub_dir)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 assert isinstance(model, dict)
self.assertIn('name', model)
self.assertIn('path', model)
self.assertEqual(model['name'], 'Untitled0.ipynb')
Thomas Kluyver
Fix notebook manager test
r13098 self.assertEqual(model['path'], sub_dir.strip('/'))
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 def test_get_notebook(self):
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 with TemporaryDirectory() as td:
# Test in root directory
# Create a notebook
nm = FileNotebookManager(notebook_dir=td)
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.create_notebook()
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 name = model['name']
path = model['path']
# Check that we 'get' on the notebook we just created
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model2 = nm.get_notebook(name, path)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 assert isinstance(model2, dict)
self.assertIn('name', model2)
self.assertIn('path', model2)
self.assertEqual(model['name'], name)
self.assertEqual(model['path'], path)
# Test in sub-directory
sub_dir = '/foo/'
self.make_dir(nm.notebook_dir, 'foo')
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.create_notebook(None, sub_dir)
model2 = nm.get_notebook(name, sub_dir)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 assert isinstance(model2, dict)
self.assertIn('name', model2)
self.assertIn('path', model2)
self.assertIn('content', model2)
self.assertEqual(model2['name'], 'Untitled0.ipynb')
Thomas Kluyver
Fix some notebook model tests
r13092 self.assertEqual(model2['path'], sub_dir.strip('/'))
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 def test_update_notebook(self):
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 with TemporaryDirectory() as td:
# Test in root directory
# Create a notebook
nm = FileNotebookManager(notebook_dir=td)
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.create_notebook()
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 name = model['name']
path = model['path']
# Change the name in the model for rename
model['name'] = 'test.ipynb'
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.update_notebook(model, name, path)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 assert isinstance(model, dict)
self.assertIn('name', model)
self.assertIn('path', model)
self.assertEqual(model['name'], 'test.ipynb')
# Make sure the old name is gone
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 self.assertRaises(HTTPError, nm.get_notebook, name, path)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
# Test in sub-directory
# Create a directory and notebook in that directory
sub_dir = '/foo/'
self.make_dir(nm.notebook_dir, 'foo')
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.create_notebook(None, sub_dir)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 name = model['name']
path = model['path']
# Change the name in the model for rename
model['name'] = 'test_in_sub.ipynb'
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.update_notebook(model, name, path)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 assert isinstance(model, dict)
self.assertIn('name', model)
self.assertIn('path', model)
self.assertEqual(model['name'], 'test_in_sub.ipynb')
Thomas Kluyver
Fix some notebook model tests
r13092 self.assertEqual(model['path'], sub_dir.strip('/'))
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
# Make sure the old name is gone
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 self.assertRaises(HTTPError, nm.get_notebook, name, path)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 def test_save_notebook(self):
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 with TemporaryDirectory() as td:
# Test in the root directory
# Create a notebook
nm = FileNotebookManager(notebook_dir=td)
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.create_notebook()
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 name = model['name']
path = model['path']
# Get the model with 'content'
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 full_model = nm.get_notebook(name, path)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
# Save the notebook
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.save_notebook(full_model, name, path)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 assert isinstance(model, dict)
self.assertIn('name', model)
self.assertIn('path', model)
self.assertEqual(model['name'], name)
self.assertEqual(model['path'], path)
# Test in sub-directory
# Create a directory and notebook in that directory
sub_dir = '/foo/'
self.make_dir(nm.notebook_dir, 'foo')
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.create_notebook(None, sub_dir)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 name = model['name']
path = model['path']
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.get_notebook(name, path)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
# Change the name in the model for rename
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.save_notebook(model, name, path)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 assert isinstance(model, dict)
self.assertIn('name', model)
self.assertIn('path', model)
self.assertEqual(model['name'], 'Untitled0.ipynb')
Thomas Kluyver
Fix some notebook model tests
r13092 self.assertEqual(model['path'], sub_dir.strip('/'))
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
Thomas Kluyver
Add test for saving notebook with .py script
r13514 def test_save_notebook_with_script(self):
with TemporaryDirectory() as td:
# Create a notebook
nm = FileNotebookManager(notebook_dir=td)
nm.save_script = True
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.create_notebook()
Thomas Kluyver
Add test for saving notebook with .py script
r13514 name = model['name']
path = model['path']
# Get the model with 'content'
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 full_model = nm.get_notebook(name, path)
Thomas Kluyver
Add test for saving notebook with .py script
r13514
# Save the notebook
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.save_notebook(full_model, name, path)
Thomas Kluyver
Add test for saving notebook with .py script
r13514
# Check that the script was created
py_path = os.path.join(td, os.path.splitext(name)[0]+'.py')
assert os.path.exists(py_path), py_path
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 def test_delete_notebook(self):
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 with TemporaryDirectory() as td:
# Test in the root directory
# Create a notebook
nm = FileNotebookManager(notebook_dir=td)
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 model = nm.create_notebook()
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046 name = model['name']
path = model['path']
# Delete the notebook
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 nm.delete_notebook(name, path)
Zachary Sailer
refactoring of nbmanager and filenbmanager...
r13046
# Check that a 'get' on the deleted notebook raises and error
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 self.assertRaises(HTTPError, nm.get_notebook, name, path)
MinRK
test nbmanager.copy_notebook
r13136
def test_copy_notebook(self):
with TemporaryDirectory() as td:
# Test in the root directory
# Create a notebook
nm = FileNotebookManager(notebook_dir=td)
path = u'å b'
name = u'nb √.ipynb'
os.mkdir(os.path.join(td, path))
Konrad Hinsen
NotebookManager API: rename *notebook_model methods to *notebook
r15290 orig = nm.create_notebook({'name' : name}, path=path)
MinRK
test nbmanager.copy_notebook
r13136
# copy with unspecified name
copy = nm.copy_notebook(name, path=path)
self.assertEqual(copy['name'], orig['name'].replace('.ipynb', '-Copy0.ipynb'))
# copy with specified name
copy2 = nm.copy_notebook(name, u'copy 2.ipynb', path=path)
self.assertEqual(copy2['name'], u'copy 2.ipynb')