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
70
71
|
# vim: set fileencoding=utf-8 :
"""Test L{GitRepository}'s write_tree method"""
from . import context
import os
import tests.testutils as 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 open(path, 'w') as f:
print("testdata %d" % i, file=f)
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
self.repo.commit_tree(sha1, "second commit", parents=[commit])
# commit the same tree again using a non existant parent
self.assertRaises(gbp.git.GitRepositoryError,
self.repo.commit_tree,
sha1,
"failed commit",
['doesnotexist'])
# vim:et:ts=4:sw=4:et:sts=4:ai:set list listchars=tab\:»·,trail\:·:
|