1
# Copyright (C) 2007, 2008, 2009, 2011, 2016 Canonical Ltd
1
# Copyright (C) 2007 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
17
"""Tests for repository statistic-gathering apis."""
19
from bzrlib.tests.per_repository import TestCaseWithRepository
19
from bzrlib.tests.repository_implementations.test_repository import TestCaseWithRepository
22
22
class TestGatherStats(TestCaseWithRepository):
26
26
tree = self.make_branch_and_memory_tree('.')
29
# three commits: one to be included by reference, one to be
29
# three commits: one to be included by reference, one to be
30
30
# requested, and one to be in the repository but [mostly] ignored.
31
31
rev1 = tree.commit('first post', committer='person 1',
32
32
timestamp=1170491381, timezone=0)
35
35
rev3 = tree.commit('third post', committer='person 3',
36
36
timestamp=1172491381, timezone=0)
38
# now, in the same repository, asking for stats with/without the
38
# now, in the same repository, asking for stats with/without the
39
39
# committers flag generates the same date information.
40
40
stats = tree.branch.repository.gather_stats(rev2, committers=False)
41
# this test explicitly only checks for certain keys
42
# in the dictionary, as implementations are allowed to
43
# provide arbitrary data in other keys.
44
self.assertEqual(stats['firstrev'], (1170491381.0, 0))
45
self.assertEqual(stats['latestrev'], (1171491381.0, 0))
46
self.assertEqual(stats['revisions'], 3)
42
'firstrev': (1170491381.0, 0),
43
'latestrev': (1171491381.0, 0),
47
47
stats = tree.branch.repository.gather_stats(rev2, committers=True)
48
self.assertEqual(2, stats["committers"])
49
self.assertEqual((1170491381.0, 0), stats["firstrev"])
50
self.assertEqual((1171491381.0, 0), stats["latestrev"])
51
self.assertEqual(3, stats["revisions"])
50
'firstrev': (1170491381.0, 0),
51
'latestrev': (1171491381.0, 0),
53
56
def test_gather_stats_empty_repo(self):
54
57
"""An empty repository still has revisions."""
55
58
tree = self.make_branch_and_memory_tree('.')
56
59
# now ask for global repository stats.
57
60
stats = tree.branch.repository.gather_stats()
58
self.assertEqual(0, stats['revisions'])
59
self.assertFalse("committers" in stats)
60
self.assertFalse("firstrev" in stats)
61
self.assertFalse("latestrev" in stats)