##// END OF EJS Templates
TEST: Test separate roots for Contents and Checkpoints.
Scott Sanderson -
Show More
@@ -2,6 +2,7 b''
2 """Test the contents webservice API."""
2 """Test the contents webservice API."""
3
3
4 import base64
4 import base64
5 from contextlib import contextmanager
5 import io
6 import io
6 import json
7 import json
7 import os
8 import os
@@ -21,6 +22,7 b' from IPython.nbformat.v4 import ('
21 from IPython.nbformat import v2
22 from IPython.nbformat import v2
22 from IPython.utils import py3compat
23 from IPython.utils import py3compat
23 from IPython.utils.data import uniq_stable
24 from IPython.utils.data import uniq_stable
25 from IPython.utils.tempdir import TemporaryDirectory
24
26
25
27
26 def notebooks_only(dir_model):
28 def notebooks_only(dir_model):
@@ -502,7 +504,6 b' class APITest(NotebookTestBase):'
502 self.assertEqual(newnb.cells[0].source,
504 self.assertEqual(newnb.cells[0].source,
503 u'Created by test Β³')
505 u'Created by test Β³')
504
506
505
506 def test_checkpoints(self):
507 def test_checkpoints(self):
507 resp = self.api.read('foo/a.ipynb')
508 resp = self.api.read('foo/a.ipynb')
508 r = self.api.new_checkpoint('foo/a.ipynb')
509 r = self.api.new_checkpoint('foo/a.ipynb')
@@ -540,3 +541,28 b' class APITest(NotebookTestBase):'
540 self.assertEqual(r.status_code, 204)
541 self.assertEqual(r.status_code, 204)
541 cps = self.api.get_checkpoints('foo/a.ipynb').json()
542 cps = self.api.get_checkpoints('foo/a.ipynb').json()
542 self.assertEqual(cps, [])
543 self.assertEqual(cps, [])
544
545 @contextmanager
546 def patch_cp_root(self, dirname):
547 """
548 Temporarily patch the root dir of our checkpoint manager.
549 """
550 cpm = self.notebook.contents_manager.checkpoint_manager
551 old_dirname = cpm.root_dir
552 cpm.root_dir = dirname
553 try:
554 yield
555 finally:
556 cpm.root_dir = old_dirname
557
558 def test_checkpoints_separate_root(self):
559 """
560 Test that FileCheckpointManager functions correctly even when it's
561 using a different root dir from FileContentsManager. This also keeps
562 the implementation honest for use with ContentsManagers that don't map
563 models to the filesystem
564 """
565
566 with TemporaryDirectory() as td:
567 with self.patch_cp_root(td):
568 self.test_checkpoints()
General Comments 0
You need to be logged in to leave comments. Login now