34
34
def open_repo(self, name):
35
35
return Repo(os.path.join(os.path.dirname(__file__),
36
'data', 'repos', name, '.git'))
36
'data', 'repos', name))
38
38
def test_simple_props(self):
39
r = self.open_repo('a')
39
r = self.open_repo('a.git')
40
40
basedir = os.path.join(os.path.dirname(__file__),
41
os.path.join('data', 'repos', 'a', '.git'))
41
os.path.join('data', 'repos', 'a.git'))
42
42
self.assertEqual(r.controldir(), basedir)
44
44
def test_ref(self):
45
r = self.open_repo('a')
45
r = self.open_repo('a.git')
46
46
self.assertEqual(r.ref('refs/heads/master'),
47
47
'a90fa2d900a17e99b433217e988c4eb4a2e9a097')
49
49
def test_get_refs(self):
50
r = self.open_repo('a')
50
r = self.open_repo('a.git')
51
51
self.assertEquals({
52
52
'HEAD': 'a90fa2d900a17e99b433217e988c4eb4a2e9a097',
53
53
'refs/heads/master': 'a90fa2d900a17e99b433217e988c4eb4a2e9a097'
56
56
def test_head(self):
57
r = self.open_repo('a')
57
r = self.open_repo('a.git')
58
58
self.assertEqual(r.head(), 'a90fa2d900a17e99b433217e988c4eb4a2e9a097')
60
60
def test_get_object(self):
61
r = self.open_repo('a')
61
r = self.open_repo('a.git')
62
62
obj = r.get_object(r.head())
63
63
self.assertEqual(obj._type, 'commit')
65
65
def test_get_object_non_existant(self):
66
r = self.open_repo('a')
66
r = self.open_repo('a.git')
67
67
self.assertRaises(KeyError, r.get_object, missing_sha)
69
69
def test_commit(self):
70
r = self.open_repo('a')
70
r = self.open_repo('a.git')
71
71
obj = r.commit(r.head())
72
72
self.assertEqual(obj._type, 'commit')
74
74
def test_commit_not_commit(self):
75
r = self.open_repo('a')
75
r = self.open_repo('a.git')
76
76
self.assertRaises(errors.NotCommitError,
77
77
r.commit, '4f2e6529203aa6d44b5af6e3292c837ceda003f9')
79
79
def test_tree(self):
80
r = self.open_repo('a')
80
r = self.open_repo('a.git')
81
81
commit = r.commit(r.head())
82
82
tree = r.tree(commit.tree)
83
83
self.assertEqual(tree._type, 'tree')
84
84
self.assertEqual(tree.sha().hexdigest(), commit.tree)
86
86
def test_tree_not_tree(self):
87
r = self.open_repo('a')
87
r = self.open_repo('a.git')
88
88
self.assertRaises(errors.NotTreeError, r.tree, r.head())
90
90
def test_get_blob(self):
91
r = self.open_repo('a')
91
r = self.open_repo('a.git')
92
92
commit = r.commit(r.head())
93
93
tree = r.tree(commit.tree())
94
94
blob_sha = tree.entries()[0][2]
97
97
self.assertEqual(blob.sha().hexdigest(), blob_sha)
99
99
def test_get_blob(self):
100
r = self.open_repo('a')
100
r = self.open_repo('a.git')
101
101
self.assertRaises(errors.NotBlobError, r.get_blob, r.head())
103
103
def test_linear_history(self):
104
r = self.open_repo('a')
104
r = self.open_repo('a.git')
105
105
history = r.revision_history(r.head())
106
106
shas = [c.sha().hexdigest() for c in history]
107
107
self.assertEqual(shas, [r.head(),
108
108
'2a72d929692c41d8554c07f6301757ba18a65d91'])
110
110
def test_merge_history(self):
111
r = self.open_repo('simple_merge')
111
r = self.open_repo('simple_merge.git')
112
112
history = r.revision_history(r.head())
113
113
shas = [c.sha().hexdigest() for c in history]
114
114
self.assertEqual(shas, ['5dac377bdded4c9aeb8dff595f0faeebcc8498cc',
118
118
'0d89f20333fbb1d2f3a94da77f4981373d8f4310'])
120
120
def test_revision_history_missing_commit(self):
121
r = self.open_repo('simple_merge')
121
r = self.open_repo('simple_merge.git')
122
122
self.assertRaises(errors.MissingCommitError, r.revision_history,
125
125
def test_out_of_order_merge(self):
126
126
"""Test that revision history is ordered by date, not parent order."""
127
r = self.open_repo('ooo_merge')
127
r = self.open_repo('ooo_merge.git')
128
128
history = r.revision_history(r.head())
129
129
shas = [c.sha().hexdigest() for c in history]
130
130
self.assertEqual(shas, ['7601d7f6231db6a57f7bbb79ee52e4d462fd44d1',