diff --git a/IPython/html/services/notebooks/filenbmanager.py b/IPython/html/services/notebooks/filenbmanager.py index d313d63..c905ae6 100644 --- a/IPython/html/services/notebooks/filenbmanager.py +++ b/IPython/html/services/notebooks/filenbmanager.py @@ -131,28 +131,29 @@ class FileNotebookManager(NotebookManager): path = self.get_os_path(name, path) return os.path.isfile(path) - def get_os_path(self, fname, path=None): - """Return a full path to a notebook with the os.sep as the separator. + def get_os_path(self, fname, path='/'): + """Given a notebook name and a server URL path, return its file system + path. Parameters ---------- fname : string The name of a notebook file with the .ipynb extension path : string - The relative path (with '/' as separator) to the named notebook. + The relative URL path (with '/' as separator) to the named + notebook. Returns ------- - path : - A path that combines notebook_dir (location where server started), - the relative path, and the filename with the current operating - system's url. + path : string + A file system path that combines notebook_dir (location where + server started), the relative path, and the filename with the + current operating system's url. """ - if path is None: - path = '/' parts = path.split('/') parts = [p for p in parts if p != ''] # remove duplicate splits - path = os.sep.join([self.notebook_dir] + parts + [fname]) + parts += [fname] + path = os.path.join(self.notebook_dir, *parts) return path def read_notebook_object_from_path(self, path): diff --git a/IPython/html/services/notebooks/tests/test_nbmanager.py b/IPython/html/services/notebooks/tests/test_nbmanager.py index 91294bb..ec3acb2 100644 --- a/IPython/html/services/notebooks/tests/test_nbmanager.py +++ b/IPython/html/services/notebooks/tests/test_nbmanager.py @@ -14,14 +14,14 @@ class TestFileNotebookManager(TestCase): def test_nb_dir(self): with TemporaryDirectory() as td: - km = FileNotebookManager(notebook_dir=td) - self.assertEqual(km.notebook_dir, td) + fm = FileNotebookManager(notebook_dir=td) + self.assertEqual(fm.notebook_dir, td) def test_create_nb_dir(self): with TemporaryDirectory() as td: nbdir = os.path.join(td, 'notebooks') - km = FileNotebookManager(notebook_dir=nbdir) - self.assertEqual(km.notebook_dir, nbdir) + fm = FileNotebookManager(notebook_dir=nbdir) + self.assertEqual(fm.notebook_dir, nbdir) def test_missing_nb_dir(self): with TemporaryDirectory() as td: @@ -37,22 +37,21 @@ class TestFileNotebookManager(TestCase): # separators. with TemporaryDirectory() as td: nbdir = os.path.join(td, 'notebooks') - km = FileNotebookManager(notebook_dir=nbdir) - path = km.get_os_path('test.ipynb', '/path/to/notebook/') - self.assertEqual(path, km.notebook_dir+os.sep+'path'+os.sep+'to'+os.sep+ - 'notebook'+os.sep+'test.ipynb') - - with TemporaryDirectory() as td: - nbdir = os.path.join(td, 'notebooks') - km = FileNotebookManager(notebook_dir=nbdir) - path = km.get_os_path('test.ipynb', None) - self.assertEqual(path, km.notebook_dir+os.sep+'test.ipynb') - - with TemporaryDirectory() as td: - nbdir = os.path.join(td, 'notebooks') - km = FileNotebookManager(notebook_dir=nbdir) - path = km.get_os_path('test.ipynb', '////') - self.assertEqual(path, km.notebook_dir+os.sep+'test.ipynb') + fm = FileNotebookManager(notebook_dir=nbdir) + path = fm.get_os_path('test.ipynb', '/path/to/notebook/') + 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) + path = fm.get_os_path('test.ipynb') + fs_path = os.path.join(fm.notebook_dir, 'test.ipynb') + self.assertEqual(path, fs_path) + + fm = FileNotebookManager(notebook_dir=nbdir) + path = fm.get_os_path('test.ipynb', '////') + fs_path = os.path.join(fm.notebook_dir, 'test.ipynb') + self.assertEqual(path, fs_path) class TestNotebookManager(TestCase): def test_named_notebook_path(self):