1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
# vim: set fileencoding=utf-8 :
"""Test L{GitRepository}'s write_tree method"""
import os
import testutils
import gbp.log
import gbp.git
import gbp.errors
class TestWriteTree(testutils.DebianGitTestRepo):
def _write_testtree(self):
"""Write a test tree"""
paths = []
for i in range(4):
path = os.path.join(self.repo.path, 'testfile%d' % i)
with file(path, 'w') as f:
print >>f, "testdata %d" % i
paths.append(path)
return paths
def test_write_tree_index_nonexistant(self):
"""Write out index file to nonexistant dir"""
paths = self._write_testtree()
self.repo.add_files(paths)
self.assertRaises(gbp.git.GitRepositoryError,
self.repo.write_tree,
'/does/not/exist')
def test_write_tree(self):
"""Write out index file to alternate index file"""
index = os.path.join(self.repo.git_dir, 'gbp_index')
expected_sha1 = '4b825dc642cb6eb9a060e54bf8d69288fbee4904'
paths = self._write_testtree()
self.repo.add_files(paths)
sha1 = self.repo.write_tree(index)
self.assertTrue(os.path.exists(index))
self.assertEqual(sha1, expected_sha1)
self.assertTrue(self.repo.has_treeish(expected_sha1))
def test_commit_tree(self):
"""Commit a tree"""
expected_sha1 = 'ea63fcee40675a5f82ea6bedbf29ca86d89c5f63'
paths = self._write_testtree()
self.repo.add_files(paths)
sha1 = self.repo.write_tree()
self.assertEqual(sha1, expected_sha1)
self.assertTrue(self.repo.has_treeish(expected_sha1))
commit = self.repo.commit_tree(sha1, "first commit", parents=[],
committer=dict(name='foo',
email='foo@example.com'),
author=dict(name='bar',
email='bar@example.com'),
)
self.assertEqual(len(commit), 40)
# commit the same tree again using the previous commit as parent
commit2 = self.repo.commit_tree(sha1, "second commit", parents=[commit])
# commit the same tree again using a non existant parent
self.assertRaises(gbp.errors.GbpError,
self.repo.commit_tree,
sha1,
"failed commit",
['doesnotexist'])
# vim:et:ts=4:sw=4:et:sts=4:ai:set list listchars=tab\:»·,trail\:·:
|