/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to tests/test_commit.py

  • Committer: Curtis Hovey
  • Date: 2012-01-22 16:16:04 UTC
  • mto: This revision was merged to the branch mainline in revision 771.
  • Revision ID: sinzui.is@verizon.net-20120122161604-5a8qbeks1oq8uxxd
Added guard to avoid accessing a non-existent treeselection.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
"""Test the Commit functionality."""
18
18
 
19
19
import os
20
 
import subprocess
21
 
from tempfile import NamedTemporaryFile
22
20
 
23
21
from gi.repository import Gtk
24
22
 
38
36
    commitmsgs,
39
37
    )
40
38
from bzrlib.plugins.gtk.commitmsgs import SavedCommitMessagesManager
41
 
from bzrlib.plugins.gtk.tests import MockMethod
42
39
 
43
40
 
44
41
# TODO: All we need is basic ancestry code to test this, we shouldn't need a
51
48
        tree.commit('one')
52
49
 
53
50
        self.addCleanup(tree.lock_read().unlock)
54
 
        self.assertEquals([], list(commit.pending_revisions(tree)))
 
51
        self.assertIs(None, commit.pending_revisions(tree))
55
52
 
56
53
    def test_pending_revisions_simple(self):
57
54
        tree = self.make_branch_and_tree('tree')
62
59
        self.assertEqual([rev_id1, rev_id2], tree.get_parent_ids())
63
60
 
64
61
        self.addCleanup(tree.lock_read().unlock)
65
 
        pending_revisions = list(commit.pending_revisions(tree))
 
62
        pending_revisions = commit.pending_revisions(tree)
66
63
        # One primary merge
67
64
        self.assertEqual(1, len(pending_revisions))
68
65
        # Revision == rev_id2
81
78
        self.assertEqual([rev_id1, rev_id4], tree.get_parent_ids())
82
79
 
83
80
        self.addCleanup(tree.lock_read().unlock)
84
 
        pending_revisions = list(commit.pending_revisions(tree))
 
81
        pending_revisions = commit.pending_revisions(tree)
85
82
        # One primary merge
86
83
        self.assertEqual(1, len(pending_revisions))
87
84
        # Revision == rev_id2
105
102
        self.assertEqual([rev_id1, rev_id3, rev_id5], tree.get_parent_ids())
106
103
 
107
104
        self.addCleanup(tree.lock_read().unlock)
108
 
        pending_revisions = list(commit.pending_revisions(tree))
 
105
        pending_revisions = commit.pending_revisions(tree)
109
106
        # Two primary merges
110
107
        self.assertEqual(2, len(pending_revisions))
111
108
        # Revision == rev_id2
146
143
        pass # With no widgets, there are no widgets to fill out
147
144
 
148
145
 
 
146
class MockMethod():
 
147
 
 
148
    @classmethod
 
149
    def bind(klass, test_instance, obj, method_name):
 
150
        original_method = getattr(obj, method_name)
 
151
        test_instance.addCleanup(setattr, obj, method_name, original_method)
 
152
        setattr(obj, method_name, klass())
 
153
 
 
154
    def __init__(self):
 
155
        self.called = False
 
156
        self.args = None
 
157
        self.kwargs = None
 
158
 
 
159
    def __call__(self, *args, **kwargs):
 
160
        self.called = True
 
161
        self.args = args
 
162
        self.kwargs = kwargs
 
163
 
 
164
 
149
165
class TestCommitDialogSimple(tests.TestCaseWithTransport):
150
166
 
151
167
    def test_init(self):
174
190
 
175
191
        dlg = CommitDialogNoWidgets(tree)
176
192
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
177
 
        self.assertEquals([], dlg._pending)
 
193
        self.assertIs(None, dlg._pending)
178
194
        self.assertFalse(dlg._is_checkout)
179
195
 
180
196
    def test_setup_parameters_checkout(self):
185
201
 
186
202
        dlg = CommitDialogNoWidgets(tree2)
187
203
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
188
 
        self.assertEquals([], dlg._pending)
 
204
        self.assertIs(None, dlg._pending)
189
205
        self.assertTrue(dlg._is_checkout)
190
206
 
191
207
    def test_setup_parameters_pending(self):
216
232
        self.assertEqual([], delta.removed)
217
233
        self.assertEqual([(u'a', 'a-id', 'file')], delta.added)
218
234
 
219
 
    def test_on_treeview_files_cursor_changed_no_selection(self):
220
 
        MockMethod.bind(self, CommitDialogNoWidgets, '_update_per_file_info')
221
 
        tree = self.make_branch_and_tree('tree')
222
 
        rev_id = tree.commit('first')
223
 
        dlg = CommitDialogNoWidgets(tree)
224
 
        treeview = Gtk.TreeView()
225
 
        dlg._on_treeview_files_cursor_changed(treeview)
226
 
        self.assertFalse(CommitDialogNoWidgets._update_per_file_info.called)
227
 
 
228
235
    def test_on_treeview_files_cursor_changed_with_destroyed_treeview(self):
229
236
        MockMethod.bind(self, CommitDialogNoWidgets, '_update_per_file_info')
230
237
        tree = self.make_branch_and_tree('tree')
235
242
        dlg._on_treeview_files_cursor_changed(treeview)
236
243
        self.assertFalse(CommitDialogNoWidgets._update_per_file_info.called)
237
244
 
238
 
    def test_get_line_height(self):
239
 
        tree = self.make_branch_and_tree('tree')
240
 
        dlg = CommitDialogNoWidgets(tree)
241
 
        textview = Gtk.TextView()
242
 
        line_height = dlg.get_line_height(textview)
243
 
        self.assertIsInstance(line_height, int)
244
 
 
245
245
 
246
246
class TestCommitDialog(tests.TestCaseWithTransport):
247
247
 
1305
1305
        self.assertEquals(u'', self._get_commit_message())
1306
1306
        self.assertEquals(u'de',
1307
1307
                          self._get_file_commit_messages())
1308
 
 
1309
 
 
1310
 
class BzrHandlePatchTestCase(tests.TestCase):
1311
 
 
1312
 
    def setUp(self):
1313
 
        top = os.path.abspath(os.path.join(
1314
 
            os.path.dirname(__file__), os.pardir))
1315
 
        self.script = os.path.join(top, 'bzr-handle-patch')
1316
 
        self.env = dict(os.environ)
1317
 
        self.env['BZR_PLUGINS_AT'] = 'gtk@%s' % top
1318
 
        self.patch = NamedTemporaryFile()
1319
 
        self.patch.write('\n'.join([
1320
 
            "=== added file '_test.txt'",
1321
 
            "--- _test.txt      1970-01-01 00:00:00 +0000",
1322
 
            "+++ _test.txt      2012-02-03 20:00:34 +0000",
1323
 
            "@@ -0,0 +1,1 @@",
1324
 
            "+hello",
1325
 
            ]))
1326
 
        self.patch.flush()
1327
 
        super(BzrHandlePatchTestCase, self).setUp()
1328
 
 
1329
 
    def test_smoketest(self):
1330
 
        # This is a smoke test to verify the process starts.
1331
 
        bzr_notify = subprocess.Popen(
1332
 
            [self.script, self.patch.name, 'test'],
1333
 
            stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=self.env)
1334
 
        stdout, stderr = bzr_notify.communicate()
1335
 
        self.assertEqual('', stdout)
1336
 
        self.assertEqual('', stderr)