1
from ...tests import TestCase, TestCaseWithTransport
2
from ...revision import Revision
3
from .cmds import get_revisions_and_committers, collapse_by_person
6
class TestGetRevisionsAndCommitters(TestCaseWithTransport):
9
wt = self.make_branch_and_tree('.')
10
wt.commit(message='1', committer='Fero <fero@example.com>', rev_id=b'1')
11
wt.commit(message='2', committer='Fero <fero@example.com>', rev_id=b'2')
12
wt.commit(message='3', committer='Jano <jano@example.com>', rev_id=b'3')
13
wt.commit(message='4', committer='Jano <jano@example.com>',
14
authors=['Vinco <vinco@example.com>'], rev_id=b'4')
15
wt.commit(message='5', committer='Ferko <fero@example.com>', rev_id=b'5')
16
revs, committers = get_revisions_and_committers(wt.branch.repository,
17
[b'1', b'2', b'3', b'4', b'5'])
18
fero = ('Fero', 'fero@example.com')
19
jano = ('Jano', 'jano@example.com')
20
vinco = ('Vinco', 'vinco@example.com')
21
ferok = ('Ferko', 'fero@example.com')
22
self.assertEqual({fero: fero, jano: jano, vinco: vinco, ferok: fero},
25
def test_empty_email(self):
26
wt = self.make_branch_and_tree('.')
27
wt.commit(message='1', committer='Fero', rev_id=b'1')
28
wt.commit(message='2', committer='Fero', rev_id=b'2')
29
wt.commit(message='3', committer='Jano', rev_id=b'3')
30
revs, committers = get_revisions_and_committers(wt.branch.repository,
32
self.assertEqual({('Fero', ''): ('Fero', ''),
33
('Jano', ''): ('Jano', ''),
36
def test_different_case(self):
37
wt = self.make_branch_and_tree('.')
38
wt.commit(message='1', committer='Fero', rev_id=b'1')
39
wt.commit(message='2', committer='Fero', rev_id=b'2')
40
wt.commit(message='3', committer='FERO', rev_id=b'3')
41
revs, committers = get_revisions_and_committers(wt.branch.repository,
43
self.assertEqual({('Fero', ''): ('Fero', ''),
44
('FERO', ''): ('Fero', ''),
46
self.assertEquals([b'1', b'2', b'3'], sorted(
47
[r.revision_id for r in revs]))
50
class TestCollapseByPerson(TestCase):
52
def test_no_conflicts(self):
54
Revision('1', {}, committer='Foo <foo@example.com>'),
55
Revision('2', {}, committer='Bar <bar@example.com>'),
56
Revision('3', {}, committer='Bar <bar@example.com>'),
58
foo = ('Foo', 'foo@example.com')
59
bar = ('Bar', 'bar@example.com')
60
committers = {foo: foo, bar: bar}
61
info = collapse_by_person(revisions, committers)
62
self.assertEquals(2, info[0][0])
63
self.assertEquals({'bar@example.com': 2}, info[0][2])
64
self.assertEquals({'Bar': 2}, info[0][3])
66
def test_different_email(self):
68
Revision('1', {}, committer='Foo <foo@example.com>'),
69
Revision('2', {}, committer='Foo <bar@example.com>'),
70
Revision('3', {}, committer='Foo <bar@example.com>'),
72
foo = ('Foo', 'foo@example.com')
73
bar = ('Foo', 'bar@example.com')
74
committers = {foo: foo, bar: foo}
75
info = collapse_by_person(revisions, committers)
76
self.assertEquals(3, info[0][0])
78
{'foo@example.com': 1, 'bar@example.com': 2}, info[0][2])
79
self.assertEquals({'Foo': 3}, info[0][3])
81
def test_different_name(self):
83
Revision('1', {}, committer='Foo <foo@example.com>'),
84
Revision('2', {}, committer='Bar <foo@example.com>'),
85
Revision('3', {}, committer='Bar <foo@example.com>'),
87
foo = ('Foo', 'foo@example.com')
88
bar = ('Bar', 'foo@example.com')
89
committers = {foo: foo, bar: foo}
90
info = collapse_by_person(revisions, committers)
91
self.assertEquals(3, info[0][0])
92
self.assertEquals({'foo@example.com': 3}, info[0][2])
93
self.assertEquals({'Foo': 1, 'Bar': 2}, info[0][3])
95
def test_different_name_case(self):
97
Revision('1', {}, committer='Foo <foo@example.com>'),
98
Revision('2', {}, committer='Foo <foo@example.com>'),
99
Revision('3', {}, committer='FOO <bar@example.com>'),
101
foo = ('Foo', 'foo@example.com')
102
FOO = ('FOO', 'bar@example.com')
103
committers = {foo: foo, FOO: foo}
104
info = collapse_by_person(revisions, committers)
105
self.assertEquals(3, info[0][0])
107
{'foo@example.com': 2, 'bar@example.com': 1}, info[0][2])
108
self.assertEquals({'Foo': 2, 'FOO': 1}, info[0][3])