summaryrefslogtreecommitdiff
path: root/morphlib/gitdir_tests.py
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2014-11-11 15:05:50 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2014-11-17 12:55:49 +0000
commit987dceee2471e1611f0fe8a0cfe43d9986b1c7c1 (patch)
treecd01ae82e02b7f1dd2afcb4b77decea1006034f4 /morphlib/gitdir_tests.py
parentdb759870b43782bf86801a6b55d14af24445b121 (diff)
downloadmorph-987dceee2471e1611f0fe8a0cfe43d9986b1c7c1.tar.gz
Check that directory passed to GitDirectory is a git repo
Previously, creating a GitDirectory object for something that wasn't a Git repository would succeed, but most operations would raise a cliapp.AppException with the following error message: ERROR: Command failed: git config -z core.bare Now, the constructor will raise a NoGitRepoError if the directory isn't a Git repo, which (unless handled) gives the user the following sort of message: ERROR: Directory /src/ws/definitions is not a Git repository
Diffstat (limited to 'morphlib/gitdir_tests.py')
-rw-r--r--morphlib/gitdir_tests.py26
1 files changed, 15 insertions, 11 deletions
diff --git a/morphlib/gitdir_tests.py b/morphlib/gitdir_tests.py
index 55b3caa5..fe71ab3a 100644
--- a/morphlib/gitdir_tests.py
+++ b/morphlib/gitdir_tests.py
@@ -34,17 +34,24 @@ class GitDirectoryTests(unittest.TestCase):
def tearDown(self):
shutil.rmtree(self.tempdir)
- def fake_git_clone(self):
+ def empty_git_directory(self):
os.mkdir(self.dirname)
- os.mkdir(os.path.join(self.dirname, '.git'))
+ return morphlib.gitdir.init(self.dirname)
+
+ def test_ensures_is_a_git_repo(self):
+ self.assertRaises(OSError,
+ morphlib.gitdir.GitDirectory, self.dirname)
+
+ os.mkdir(self.dirname)
+ self.assertRaises(morphlib.gitdir.NoGitRepoError,
+ morphlib.gitdir.GitDirectory, self.dirname)
def test_has_dirname_attribute(self):
- self.fake_git_clone()
- gitdir = morphlib.gitdir.GitDirectory(self.dirname)
+ gitdir = self.empty_git_directory()
self.assertEqual(gitdir.dirname, self.dirname)
def test_can_search_for_top_directory(self):
- self.fake_git_clone()
+ self.empty_git_directory()
path_inside_working_tree = os.path.join(self.dirname, 'a', 'b', 'c')
os.makedirs(path_inside_working_tree)
@@ -54,20 +61,17 @@ class GitDirectoryTests(unittest.TestCase):
self.assertEqual(gitdir.dirname, self.dirname)
def test_runs_command_in_right_directory(self):
- self.fake_git_clone()
- gitdir = morphlib.gitdir.GitDirectory(self.dirname)
+ gitdir = self.empty_git_directory()
output = gitdir._runcmd(['pwd'])
self.assertEqual(output.strip(), self.dirname)
def test_sets_and_gets_configuration(self):
- os.mkdir(self.dirname)
- gitdir = morphlib.gitdir.init(self.dirname)
+ gitdir = self.empty_git_directory()
gitdir.set_config('foo.bar', 'yoyo')
self.assertEqual(gitdir.get_config('foo.bar'), 'yoyo')
def test_gets_index(self):
- os.mkdir(self.dirname)
- gitdir = morphlib.gitdir.init(self.dirname)
+ gitdir = self.empty_git_directory()
self.assertIsInstance(gitdir.get_index(), morphlib.gitindex.GitIndex)