1
from __future__ import absolute_import
3
from ...tests import TestCase, TestCaseWithTransport
4
from ...revision import Revision
5
from .cmds import get_revisions_and_committers, collapse_by_person
8
class TestGetRevisionsAndCommitters(TestCaseWithTransport):
10
def test_simple(self):
11
wt = self.make_branch_and_tree('.')
12
wt.commit(message='1', committer='Fero <fero@example.com>', rev_id=b'1')
13
wt.commit(message='2', committer='Fero <fero@example.com>', rev_id=b'2')
14
wt.commit(message='3', committer='Jano <jano@example.com>', rev_id=b'3')
15
wt.commit(message='4', committer='Jano <jano@example.com>',
16
authors=['Vinco <vinco@example.com>'], rev_id=b'4')
17
wt.commit(message='5', committer='Ferko <fero@example.com>', rev_id=b'5')
18
revs, committers = get_revisions_and_committers(wt.branch.repository,
19
[b'1', b'2', b'3', b'4', b'5'])
20
fero = ('Fero', 'fero@example.com')
21
jano = ('Jano', 'jano@example.com')
22
vinco = ('Vinco', 'vinco@example.com')
23
ferok = ('Ferko', 'fero@example.com')
24
self.assertEqual({fero: fero, jano: jano, vinco: vinco, ferok: fero},
27
def test_empty_email(self):
28
wt = self.make_branch_and_tree('.')
29
wt.commit(message='1', committer='Fero', rev_id=b'1')
30
wt.commit(message='2', committer='Fero', rev_id=b'2')
31
wt.commit(message='3', committer='Jano', rev_id=b'3')
32
revs, committers = get_revisions_and_committers(wt.branch.repository,
34
self.assertEqual({('Fero', ''): ('Fero', ''),
35
('Jano', ''): ('Jano', ''),
38
def test_different_case(self):
39
wt = self.make_branch_and_tree('.')
40
wt.commit(message='1', committer='Fero', rev_id=b'1')
41
wt.commit(message='2', committer='Fero', rev_id=b'2')
42
wt.commit(message='3', committer='FERO', rev_id=b'3')
43
revs, committers = get_revisions_and_committers(wt.branch.repository,
45
self.assertEqual({('Fero', ''): ('Fero', ''),
46
('FERO', ''): ('Fero', ''),
48
self.assertEquals([b'1', b'2', b'3'], sorted(
49
[r.revision_id for r in revs]))
52
class TestCollapseByPerson(TestCase):
54
def test_no_conflicts(self):
56
Revision('1', {}, committer='Foo <foo@example.com>'),
57
Revision('2', {}, committer='Bar <bar@example.com>'),
58
Revision('3', {}, committer='Bar <bar@example.com>'),
60
foo = ('Foo', 'foo@example.com')
61
bar = ('Bar', 'bar@example.com')
62
committers = {foo: foo, bar: bar}
63
info = collapse_by_person(revisions, committers)
64
self.assertEquals(2, info[0][0])
65
self.assertEquals({'bar@example.com': 2}, info[0][2])
66
self.assertEquals({'Bar': 2}, info[0][3])
68
def test_different_email(self):
70
Revision('1', {}, committer='Foo <foo@example.com>'),
71
Revision('2', {}, committer='Foo <bar@example.com>'),
72
Revision('3', {}, committer='Foo <bar@example.com>'),
74
foo = ('Foo', 'foo@example.com')
75
bar = ('Foo', 'bar@example.com')
76
committers = {foo: foo, bar: foo}
77
info = collapse_by_person(revisions, committers)
78
self.assertEquals(3, info[0][0])
80
{'foo@example.com': 1, 'bar@example.com': 2}, info[0][2])
81
self.assertEquals({'Foo': 3}, info[0][3])
83
def test_different_name(self):
85
Revision('1', {}, committer='Foo <foo@example.com>'),
86
Revision('2', {}, committer='Bar <foo@example.com>'),
87
Revision('3', {}, committer='Bar <foo@example.com>'),
89
foo = ('Foo', 'foo@example.com')
90
bar = ('Bar', 'foo@example.com')
91
committers = {foo: foo, bar: foo}
92
info = collapse_by_person(revisions, committers)
93
self.assertEquals(3, info[0][0])
94
self.assertEquals({'foo@example.com': 3}, info[0][2])
95
self.assertEquals({'Foo': 1, 'Bar': 2}, info[0][3])
97
def test_different_name_case(self):
99
Revision('1', {}, committer='Foo <foo@example.com>'),
100
Revision('2', {}, committer='Foo <foo@example.com>'),
101
Revision('3', {}, committer='FOO <bar@example.com>'),
103
foo = ('Foo', 'foo@example.com')
104
FOO = ('FOO', 'bar@example.com')
105
committers = {foo: foo, FOO: foo}
106
info = collapse_by_person(revisions, committers)
107
self.assertEquals(3, info[0][0])
109
{'foo@example.com': 2, 'bar@example.com': 1}, info[0][2])
110
self.assertEquals({'Foo': 2, 'FOO': 1}, info[0][3])