/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
622.1.2 by John Arbash Meinel
Add tests of RevisionView that it can handle broken file-info properties.
1
# Copyright (C) 2007, 2008 John Arbash Meinel <john@arbash-meinel.com>
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
"""Test the RevisionView functionality."""
18
737.1.1 by Curtis Hovey
Backport gtk3 test suite fixes.
19
import os
20
622.1.2 by John Arbash Meinel
Add tests of RevisionView that it can handle broken file-info properties.
21
from bzrlib import (
22
    tests,
23
    )
645 by Jelmer Vernooij
Fix more bencode imports.
24
try:
646 by Jelmer Vernooij
Reorder bencode imports, prefer the new location to prevent deprecation warnings.
25
    from bzrlib import bencode
26
except ImportError:
645 by Jelmer Vernooij
Fix more bencode imports.
27
    from bzrlib.util import bencode
622.1.2 by John Arbash Meinel
Add tests of RevisionView that it can handle broken file-info properties.
28
29
from bzrlib.plugins.gtk import revisionview
30
31
737.1.1 by Curtis Hovey
Backport gtk3 test suite fixes.
32
def fake_icon_path(*args):
33
    return os.path.join(
34
        os.path.dirname(__file__),  '..', 'icons', *args)
35
36
622.1.2 by John Arbash Meinel
Add tests of RevisionView that it can handle broken file-info properties.
37
class TestPendingRevisions(tests.TestCaseWithMemoryTransport):
38
737.1.1 by Curtis Hovey
Backport gtk3 test suite fixes.
39
    def setUp(self):
40
        super(TestPendingRevisions, self).setUp()
41
        self.overrideAttr(revisionview, 'icon_path', new=fake_icon_path)
42
622.1.2 by John Arbash Meinel
Add tests of RevisionView that it can handle broken file-info properties.
43
    def assertBufferText(self, text, buffer):
44
        """Check the text stored in the buffer."""
45
        self.assertEqual(text, buffer.get_text(buffer.get_start_iter(),
46
                                               buffer.get_end_iter()))
47
48
    def test_create_view(self):
49
        builder = self.make_branch_builder('test')
50
        builder.build_snapshot('A', None,
51
            [('add', ('', 'root-id', 'directory', None))])
52
        b = builder.get_branch()
53
54
        rv = revisionview.RevisionView(b)
737.1.1 by Curtis Hovey
Backport gtk3 test suite fixes.
55
        self.addCleanup(rv.destroy)
622.1.2 by John Arbash Meinel
Add tests of RevisionView that it can handle broken file-info properties.
56
        rev = b.repository.get_revision('A')
57
        rv.set_revision(rev)
58
        self.assertEqual(rev.committer, rv.committer.get_text())
59
        self.assertFalse(rv.author.get_property('visible'))
60
        self.assertFalse(rv.author_label.get_property('visible'))
61
        self.assertFalse(rv.file_info_box.get_property('visible'))
62
63
    def test_create_view_with_file_info(self):
64
        tree = self.make_branch_and_memory_tree('test')
65
        file_info = bencode.bencode([{'file_id':'root-id', 'path':'',
66
                                      'message':'test-message\n'}])
67
        tree.lock_write()
68
        try:
69
            tree.add([''], ['root-id'])
70
            tree.commit('test', rev_id='A', revprops={'file-info': file_info})
71
        finally:
72
            tree.unlock()
73
        b = tree.branch
74
75
        rv = revisionview.RevisionView(b)
737.1.1 by Curtis Hovey
Backport gtk3 test suite fixes.
76
        self.addCleanup(rv.destroy)
622.1.2 by John Arbash Meinel
Add tests of RevisionView that it can handle broken file-info properties.
77
        rev = b.repository.get_revision('A')
78
        rv.set_revision(rev)
79
80
        self.assertEqual(rev.committer, rv.committer.get_text())
81
        self.assertTrue(rv.file_info_box.get_property('visible'))
82
        self.assertBufferText('\ntest-message\n', rv.file_info_buffer)
83
84
    def test_create_view_with_broken_file_info(self):
85
        tree = self.make_branch_and_memory_tree('test')
86
        # This should be 'message13:'
87
        file_info = 'ld7:file_id7:root-id7:message11:test-message\n4:path0:ee'
88
        tree.lock_write()
89
        try:
90
            tree.add([''], ['root-id'])
91
            tree.commit('test', rev_id='A', revprops={'file-info': file_info})
92
        finally:
93
            tree.unlock()
94
        b = tree.branch
95
96
        rv = revisionview.RevisionView(b)
737.1.1 by Curtis Hovey
Backport gtk3 test suite fixes.
97
        self.addCleanup(rv.destroy)
622.1.2 by John Arbash Meinel
Add tests of RevisionView that it can handle broken file-info properties.
98
        rev = b.repository.get_revision('A')
99
        rv.set_revision(rev)
100
101
        self.assertEqual(rev.committer, rv.committer.get_text())
102
        self.assertFalse(rv.file_info_box.get_property('visible'))
734 by Jelmer Vernooij
Use TestCase.get_log rather than TestCase._get_log.
103
        log = self.get_log()
622.1.2 by John Arbash Meinel
Add tests of RevisionView that it can handle broken file-info properties.
104
        self.assertContainsRe(log, 'Invalid per-file info for revision:A')