get_or_create_folder should also create intermediate folders
This commit is contained in:
parent
f1ba8af0de
commit
8c2a333938
@ -22,6 +22,10 @@ v0.7.0 (in development)
|
||||
need for copying the entire current playlist from one thread to another.
|
||||
Thanks to John Bäckstrand for pinpointing the issue.
|
||||
|
||||
- Fix crash on creation of config and cache directories if intermediate
|
||||
directories does not exist. This was especially the case on OS X, where
|
||||
``~/.config`` doesn't exist for most users.
|
||||
|
||||
|
||||
v0.6.1 (2011-12-28)
|
||||
===================
|
||||
|
||||
@ -8,9 +8,12 @@ logger = logging.getLogger('mopidy.utils.path')
|
||||
|
||||
def get_or_create_folder(folder):
|
||||
folder = os.path.expanduser(folder)
|
||||
if not os.path.isdir(folder):
|
||||
if os.path.isfile(folder):
|
||||
raise OSError('A file with the same name as the desired ' \
|
||||
'dir, "%s", already exists.' % folder)
|
||||
elif not os.path.isdir(folder):
|
||||
logger.info(u'Creating dir %s', folder)
|
||||
os.mkdir(folder, 0755)
|
||||
os.makedirs(folder, 0755)
|
||||
return folder
|
||||
|
||||
def get_or_create_file(filename):
|
||||
|
||||
@ -28,12 +28,32 @@ class GetOrCreateFolderTest(unittest.TestCase):
|
||||
self.assert_(os.path.isdir(folder))
|
||||
self.assertEqual(created, folder)
|
||||
|
||||
def test_creating_nested_folders(self):
|
||||
level2_folder = os.path.join(self.parent, 'test')
|
||||
level3_folder = os.path.join(self.parent, 'test', 'test')
|
||||
self.assert_(not os.path.exists(level2_folder))
|
||||
self.assert_(not os.path.isdir(level2_folder))
|
||||
self.assert_(not os.path.exists(level3_folder))
|
||||
self.assert_(not os.path.isdir(level3_folder))
|
||||
created = get_or_create_folder(level3_folder)
|
||||
self.assert_(os.path.exists(level2_folder))
|
||||
self.assert_(os.path.isdir(level2_folder))
|
||||
self.assert_(os.path.exists(level3_folder))
|
||||
self.assert_(os.path.isdir(level3_folder))
|
||||
self.assertEqual(created, level3_folder)
|
||||
|
||||
def test_creating_existing_folder(self):
|
||||
created = get_or_create_folder(self.parent)
|
||||
self.assert_(os.path.exists(self.parent))
|
||||
self.assert_(os.path.isdir(self.parent))
|
||||
self.assertEqual(created, self.parent)
|
||||
|
||||
def test_create_folder_with_name_of_existing_file_throws_oserror(self):
|
||||
conflicting_file = os.path.join(self.parent, 'test')
|
||||
open(conflicting_file, 'w').close()
|
||||
folder = os.path.join(self.parent, 'test')
|
||||
self.assertRaises(OSError, get_or_create_folder, folder)
|
||||
|
||||
|
||||
class PathToFileURITest(unittest.TestCase):
|
||||
def test_simple_path(self):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user