This is convenient as it allows something else to manage the directory's
lifetime.
---
morphlib/sysbranchdir.py | 7 ++++---
morphlib/sysbranchdir_tests.py | 9 ++++++++-
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/morphlib/sysbranchdir.py b/morphlib/sysbranchdir.py
index a05ca52..7dc3011 100644
--- a/morphlib/sysbranchdir.py
+++ b/morphlib/sysbranchdir.py
@@ -166,7 +166,7 @@ def create(root_directory, root_repository_url, system_branch_name):
Return a SystemBranchDirectory object that represents the directory.
- The directory MUST NOT exist already. If it does,
+ The directory MUST NOT exist already or must be empty. If it is not,
SystemBranchDirectoryAlreadyExists is raised.
Note that this does NOT check out the root repository, or do any
@@ -174,11 +174,12 @@ def create(root_directory, root_repository_url,
system_branch_name):
'''
- if os.path.exists(root_directory):
+ if not os.path.exists(root_directory):
+ os.makedirs(root_directory)
+ elif os.listdir(root_directory):
raise SystemBranchDirectoryAlreadyExists(root_directory)
magic_dir = os.path.join(root_directory, '.morph-system-branch')
- os.makedirs(root_directory)
os.mkdir(magic_dir)
sb = SystemBranchDirectory(
diff --git a/morphlib/sysbranchdir_tests.py b/morphlib/sysbranchdir_tests.py
index 7ec8ef5..0a7f578 100644
--- a/morphlib/sysbranchdir_tests.py
+++ b/morphlib/sysbranchdir_tests.py
@@ -123,8 +123,15 @@ class SystemBranchDirectoryTests(unittest.TestCase):
self.assertEqual(sb.root_repository_url, self.root_repository_url)
self.assertEqual(sb.system_branch_name, self.system_branch_name)
- def test_fails_to_create_if_directory_already_exists(self):
+ def test_creates_if_directory_empty(self):
os.mkdir(self.root_directory)
+ morphlib.sysbranchdir.create(self.root_directory,
+ self.root_repository_url,
+ self.system_branch_name)
+
+ def test_fails_to_create_if_directory_non_empty(self):
+ os.mkdir(self.root_directory)
+ os.mkdir(os.path.join(self.root_directory, 'foo'))
self.assertRaises(
morphlib.sysbranchdir.SystemBranchDirectoryAlreadyExists,
morphlib.sysbranchdir.create,
--
1.7.10.4