From 3c4decbdde982a3562a529aa7f2d62c527d74ca1 2014-03-04 00:10:20 From: MinRK Date: 2014-03-04 00:10:20 Subject: [PATCH] cleanup test_nbmanager use class setUp / teardown instead of the same context manager in every test --- diff --git a/IPython/html/services/notebooks/tests/test_nbmanager.py b/IPython/html/services/notebooks/tests/test_nbmanager.py index 7c3eb4a..b4a55a3 100644 --- a/IPython/html/services/notebooks/tests/test_nbmanager.py +++ b/IPython/html/services/notebooks/tests/test_nbmanager.py @@ -61,7 +61,10 @@ class TestNotebookManager(TestCase): def setUp(self): self._temp_dir = TemporaryDirectory() self.td = self._temp_dir.name - self.nbm = FileNotebookManager(notebook_dir=self.td, log=logging.getLogger()) + self.notebook_manager = FileNotebookManager( + notebook_dir=self.td, + log=logging.getLogger() + ) def tearDown(self): self._temp_dir.cleanup() @@ -83,7 +86,7 @@ class TestNotebookManager(TestCase): nb.worksheets[0].cells.append(cell) def new_notebook(self): - nbm = self.nbm + nbm = self.notebook_manager model = nbm.create_notebook() name = model['name'] path = model['path'] @@ -96,199 +99,185 @@ class TestNotebookManager(TestCase): return nb, name, path def test_create_notebook(self): - with TemporaryDirectory() as td: - # Test in root directory - # Create a notebook - nm = FileNotebookManager(notebook_dir=td) - # Test in root directory - model = nm.create_notebook() - assert isinstance(model, dict) - self.assertIn('name', model) - self.assertIn('path', model) - self.assertEqual(model['name'], 'Untitled0.ipynb') - self.assertEqual(model['path'], '') - - # Test in sub-directory - sub_dir = '/foo/' - self.make_dir(nm.notebook_dir, 'foo') - model = nm.create_notebook(None, sub_dir) - assert isinstance(model, dict) - self.assertIn('name', model) - self.assertIn('path', model) - self.assertEqual(model['name'], 'Untitled0.ipynb') - self.assertEqual(model['path'], sub_dir.strip('/')) + nm = self.notebook_manager + # Test in root directory + model = nm.create_notebook() + assert isinstance(model, dict) + self.assertIn('name', model) + self.assertIn('path', model) + self.assertEqual(model['name'], 'Untitled0.ipynb') + self.assertEqual(model['path'], '') + + # Test in sub-directory + sub_dir = '/foo/' + self.make_dir(nm.notebook_dir, 'foo') + model = nm.create_notebook(None, sub_dir) + assert isinstance(model, dict) + self.assertIn('name', model) + self.assertIn('path', model) + self.assertEqual(model['name'], 'Untitled0.ipynb') + self.assertEqual(model['path'], sub_dir.strip('/')) def test_get_notebook(self): - with TemporaryDirectory() as td: - # Test in root directory - # Create a notebook - nm = FileNotebookManager(notebook_dir=td) - model = nm.create_notebook() - name = model['name'] - path = model['path'] - - # Check that we 'get' on the notebook we just created - model2 = nm.get_notebook(name, path) - 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') - model = nm.create_notebook(None, sub_dir) - model2 = nm.get_notebook(name, sub_dir) - assert isinstance(model2, dict) - self.assertIn('name', model2) - self.assertIn('path', model2) - self.assertIn('content', model2) - self.assertEqual(model2['name'], 'Untitled0.ipynb') - self.assertEqual(model2['path'], sub_dir.strip('/')) + nm = self.notebook_manager + # Create a notebook + model = nm.create_notebook() + name = model['name'] + path = model['path'] + + # Check that we 'get' on the notebook we just created + model2 = nm.get_notebook(name, path) + 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') + model = nm.create_notebook(None, sub_dir) + model2 = nm.get_notebook(name, sub_dir) + assert isinstance(model2, dict) + self.assertIn('name', model2) + self.assertIn('path', model2) + self.assertIn('content', model2) + self.assertEqual(model2['name'], 'Untitled0.ipynb') + self.assertEqual(model2['path'], sub_dir.strip('/')) def test_update_notebook(self): - with TemporaryDirectory() as td: - # Test in root directory - # Create a notebook - nm = FileNotebookManager(notebook_dir=td) - model = nm.create_notebook() - name = model['name'] - path = model['path'] - - # Change the name in the model for rename - model['name'] = 'test.ipynb' - model = nm.update_notebook(model, name, path) - 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 - self.assertRaises(HTTPError, nm.get_notebook, name, path) - - # Test in sub-directory - # Create a directory and notebook in that directory - sub_dir = '/foo/' - self.make_dir(nm.notebook_dir, 'foo') - model = nm.create_notebook(None, sub_dir) - name = model['name'] - path = model['path'] - - # Change the name in the model for rename - model['name'] = 'test_in_sub.ipynb' - model = nm.update_notebook(model, name, path) - assert isinstance(model, dict) - self.assertIn('name', model) - self.assertIn('path', model) - self.assertEqual(model['name'], 'test_in_sub.ipynb') - self.assertEqual(model['path'], sub_dir.strip('/')) - - # Make sure the old name is gone - self.assertRaises(HTTPError, nm.get_notebook, name, path) + nm = self.notebook_manager + # Create a notebook + model = nm.create_notebook() + name = model['name'] + path = model['path'] + + # Change the name in the model for rename + model['name'] = 'test.ipynb' + model = nm.update_notebook(model, name, path) + 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 + self.assertRaises(HTTPError, nm.get_notebook, name, path) + + # Test in sub-directory + # Create a directory and notebook in that directory + sub_dir = '/foo/' + self.make_dir(nm.notebook_dir, 'foo') + model = nm.create_notebook(None, sub_dir) + name = model['name'] + path = model['path'] + + # Change the name in the model for rename + model['name'] = 'test_in_sub.ipynb' + model = nm.update_notebook(model, name, path) + assert isinstance(model, dict) + self.assertIn('name', model) + self.assertIn('path', model) + self.assertEqual(model['name'], 'test_in_sub.ipynb') + self.assertEqual(model['path'], sub_dir.strip('/')) + + # Make sure the old name is gone + self.assertRaises(HTTPError, nm.get_notebook, name, path) def test_save_notebook(self): - with TemporaryDirectory() as td: - # Test in the root directory - # Create a notebook - nm = FileNotebookManager(notebook_dir=td) - model = nm.create_notebook() - name = model['name'] - path = model['path'] - - # Get the model with 'content' - full_model = nm.get_notebook(name, path) - - # Save the notebook - model = nm.save_notebook(full_model, name, path) - 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') - model = nm.create_notebook(None, sub_dir) - name = model['name'] - path = model['path'] - model = nm.get_notebook(name, path) - - # Change the name in the model for rename - model = nm.save_notebook(model, name, path) - assert isinstance(model, dict) - self.assertIn('name', model) - self.assertIn('path', model) - self.assertEqual(model['name'], 'Untitled0.ipynb') - self.assertEqual(model['path'], sub_dir.strip('/')) + nm = self.notebook_manager + # Create a notebook + model = nm.create_notebook() + name = model['name'] + path = model['path'] + + # Get the model with 'content' + full_model = nm.get_notebook(name, path) + + # Save the notebook + model = nm.save_notebook(full_model, name, path) + 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') + model = nm.create_notebook(None, sub_dir) + name = model['name'] + path = model['path'] + model = nm.get_notebook(name, path) + + # Change the name in the model for rename + model = nm.save_notebook(model, name, path) + assert isinstance(model, dict) + self.assertIn('name', model) + self.assertIn('path', model) + self.assertEqual(model['name'], 'Untitled0.ipynb') + self.assertEqual(model['path'], sub_dir.strip('/')) def test_save_notebook_with_script(self): - with TemporaryDirectory() as td: - # Create a notebook - nm = FileNotebookManager(notebook_dir=td) - nm.save_script = True - model = nm.create_notebook() - name = model['name'] - path = model['path'] + nm = self.notebook_manager + # Create a notebook + model = nm.create_notebook() + nm.save_script = True + model = nm.create_notebook() + name = model['name'] + path = model['path'] - # Get the model with 'content' - full_model = nm.get_notebook(name, path) + # Get the model with 'content' + full_model = nm.get_notebook(name, path) - # Save the notebook - model = nm.save_notebook(full_model, name, path) + # Save the notebook + model = nm.save_notebook(full_model, name, path) - # 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 + # Check that the script was created + py_path = os.path.join(nm.notebook_dir, os.path.splitext(name)[0]+'.py') + assert os.path.exists(py_path), py_path def test_delete_notebook(self): - with TemporaryDirectory() as td: - # Test in the root directory - # Create a notebook - nm = FileNotebookManager(notebook_dir=td) - model = nm.create_notebook() - name = model['name'] - path = model['path'] - - # Delete the notebook - nm.delete_notebook(name, path) - - # Check that a 'get' on the deleted notebook raises and error - self.assertRaises(HTTPError, nm.get_notebook, name, path) + nm = self.notebook_manager + # Create a notebook + nb, name, path = self.new_notebook() + + # Delete the notebook + nm.delete_notebook(name, path) + + # Check that a 'get' on the deleted notebook raises and error + self.assertRaises(HTTPError, nm.get_notebook, name, path) 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)) - orig = nm.create_notebook({'name' : name}, path=path) - - # 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') + nm = self.notebook_manager + path = u'å b' + name = u'nb √.ipynb' + os.mkdir(os.path.join(nm.notebook_dir, path)) + orig = nm.create_notebook({'name' : name}, path=path) + + # 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') def test_trust_notebook(self): - nbm = self.nbm + nbm = self.notebook_manager nb, name, path = self.new_notebook() untrusted = nbm.get_notebook(name, path)['content'] - assert not nbm.notary.check_signature(untrusted) + assert not nbm.notary.check_cells(untrusted) + # print(untrusted) nbm.trust_notebook(name, path) trusted = nbm.get_notebook(name, path)['content'] - assert nbm.notary.check_signature(trusted) + # print(trusted) + assert nbm.notary.check_cells(trusted) def test_mark_trusted_cells(self): - nbm = self.nbm + nbm = self.notebook_manager nb, name, path = self.new_notebook() nbm.mark_trusted_cells(nb, name, path) @@ -298,13 +287,12 @@ class TestNotebookManager(TestCase): nbm.trust_notebook(name, path) nb = nbm.get_notebook(name, path)['content'] - nbm.mark_trusted_cells(nb, name, path) for cell in nb.worksheets[0].cells: if cell.cell_type == 'code': assert cell.trusted def test_check_and_sign(self): - nbm = self.nbm + nbm = self.notebook_manager nb, name, path = self.new_notebook() nbm.mark_trusted_cells(nb, name, path)