/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-03-11 18:24:06 UTC
  • mto: This revision was merged to the branch mainline in revision 785.
  • Revision ID: sinzui.is@verizon.net-20120311182406-f4jqpff65b30g3al
Create the mnemonic for the button label.

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
20
22
 
21
23
from gi.repository import Gtk
22
24
 
29
31
    from bzrlib.tests.features import UnicodeFilenameFeature
30
32
except ImportError: # bzr < 2.5
31
33
    from bzrlib.tests import UnicodeFilenameFeature
32
 
try:
33
 
    from bzrlib import bencode
34
 
except ImportError:
35
 
    from bzrlib.util import bencode
 
34
from bzrlib import bencode
36
35
 
37
36
from bzrlib.plugins.gtk import (
38
37
    commit,
39
38
    commitmsgs,
40
39
    )
 
40
from bzrlib.plugins.gtk.commitmsgs import SavedCommitMessagesManager
 
41
from bzrlib.plugins.gtk.tests import MockMethod
41
42
 
42
43
 
43
44
# TODO: All we need is basic ancestry code to test this, we shouldn't need a
49
50
        tree = self.make_branch_and_tree('.')
50
51
        tree.commit('one')
51
52
 
52
 
        self.assertIs(None, commit.pending_revisions(tree))
 
53
        self.addCleanup(tree.lock_read().unlock)
 
54
        self.assertEquals([], list(commit.pending_revisions(tree)))
53
55
 
54
56
    def test_pending_revisions_simple(self):
55
57
        tree = self.make_branch_and_tree('tree')
59
61
        tree.merge_from_branch(tree2.branch)
60
62
        self.assertEqual([rev_id1, rev_id2], tree.get_parent_ids())
61
63
 
62
 
        pending_revisions = commit.pending_revisions(tree)
 
64
        self.addCleanup(tree.lock_read().unlock)
 
65
        pending_revisions = list(commit.pending_revisions(tree))
63
66
        # One primary merge
64
67
        self.assertEqual(1, len(pending_revisions))
65
68
        # Revision == rev_id2
77
80
        tree.merge_from_branch(tree2.branch)
78
81
        self.assertEqual([rev_id1, rev_id4], tree.get_parent_ids())
79
82
 
80
 
        pending_revisions = commit.pending_revisions(tree)
 
83
        self.addCleanup(tree.lock_read().unlock)
 
84
        pending_revisions = list(commit.pending_revisions(tree))
81
85
        # One primary merge
82
86
        self.assertEqual(1, len(pending_revisions))
83
87
        # Revision == rev_id2
100
104
        tree.merge_from_branch(tree3.branch, force=True)
101
105
        self.assertEqual([rev_id1, rev_id3, rev_id5], tree.get_parent_ids())
102
106
 
103
 
        pending_revisions = commit.pending_revisions(tree)
 
107
        self.addCleanup(tree.lock_read().unlock)
 
108
        pending_revisions = list(commit.pending_revisions(tree))
104
109
        # Two primary merges
105
110
        self.assertEqual(2, len(pending_revisions))
106
111
        # Revision == rev_id2
143
148
 
144
149
class TestCommitDialogSimple(tests.TestCaseWithTransport):
145
150
 
 
151
    def test_init(self):
 
152
        MockMethod.bind(self, CommitDialogNoWidgets, 'setup_params')
 
153
        MockMethod.bind(self, CommitDialogNoWidgets, 'construct')
 
154
        MockMethod.bind(self, CommitDialogNoWidgets, 'fill_in_data')
 
155
 
 
156
        tree = self.make_branch_and_tree('tree')
 
157
        rev_id = tree.commit('first')
 
158
        dlg = CommitDialogNoWidgets(tree)
 
159
        self.assertIs(tree, dlg._wt)
 
160
        self.assertIs(None, dlg._selected)
 
161
        self.assertTrue(dlg._enable_per_file_commits)
 
162
        self.assertTrue(dlg._commit_all_changes)
 
163
        self.assertIs(None, dlg.committed_revision_id)
 
164
        self.assertIs(None, dlg._last_selected_file)
 
165
        self.assertIsInstance(
 
166
            dlg._saved_commit_messages_manager, SavedCommitMessagesManager)
 
167
        self.assertTrue(CommitDialogNoWidgets.setup_params.called)
 
168
        self.assertTrue(CommitDialogNoWidgets.construct.called)
 
169
        self.assertTrue(CommitDialogNoWidgets.fill_in_data.called)
 
170
 
146
171
    def test_setup_parameters_no_pending(self):
147
172
        tree = self.make_branch_and_tree('tree')
148
173
        rev_id = tree.commit('first')
149
174
 
150
175
        dlg = CommitDialogNoWidgets(tree)
151
176
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
152
 
        self.assertIs(None, dlg._pending)
 
177
        self.assertEquals([], dlg._pending)
153
178
        self.assertFalse(dlg._is_checkout)
154
179
 
155
180
    def test_setup_parameters_checkout(self):
160
185
 
161
186
        dlg = CommitDialogNoWidgets(tree2)
162
187
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
163
 
        self.assertIs(None, dlg._pending)
 
188
        self.assertEquals([], dlg._pending)
164
189
        self.assertTrue(dlg._is_checkout)
165
190
 
166
191
    def test_setup_parameters_pending(self):
191
216
        self.assertEqual([], delta.removed)
192
217
        self.assertEqual([(u'a', 'a-id', 'file')], delta.added)
193
218
 
 
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
    def test_on_treeview_files_cursor_changed_with_destroyed_treeview(self):
 
229
        MockMethod.bind(self, CommitDialogNoWidgets, '_update_per_file_info')
 
230
        tree = self.make_branch_and_tree('tree')
 
231
        rev_id = tree.commit('first')
 
232
        dlg = CommitDialogNoWidgets(tree)
 
233
        treeview = Gtk.TreeView()
 
234
        treeview.destroy()
 
235
        dlg._on_treeview_files_cursor_changed(treeview)
 
236
        self.assertFalse(CommitDialogNoWidgets._update_per_file_info.called)
 
237
 
194
238
 
195
239
class TestCommitDialog(tests.TestCaseWithTransport):
196
240
 
295
339
 
296
340
        dlg = commit.CommitDialog(tree)
297
341
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
298
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
342
        self.assertEqual([("", "", True, 'All Files', ''),
299
343
                          ('a-id', 'a', True, 'a', 'added'),
300
344
                          ('b-id', 'b', True, 'b/', 'added'),
301
345
                          ('c-id', 'b/c', True, 'b/c', 'added'),
312
356
 
313
357
        dlg = commit.CommitDialog(tree)
314
358
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
315
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
359
        self.assertEqual([("", "", True, 'All Files', ''),
316
360
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
317
361
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed'),
318
362
                         ], values)
327
371
 
328
372
        dlg = commit.CommitDialog(tree)
329
373
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
330
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
374
        self.assertEqual([("", "", True, 'All Files', ''),
331
375
                          ('a-id', 'a', True, 'a', 'modified'),
332
376
                         ], values)
333
377
 
347
391
 
348
392
        dlg = commit.CommitDialog(tree)
349
393
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
350
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
394
        self.assertEqual([("", "", True, 'All Files', ''),
351
395
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
352
396
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed and modified'),
353
397
                          ('c-id', 'd/c', True, 'd/c', 'modified'),
370
414
 
371
415
        dlg = commit.CommitDialog(tree)
372
416
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
373
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
417
        self.assertEqual([("", "", True, 'All Files', ''),
374
418
                          ('a-id', 'a', True, 'a => a/', 'kind changed'),
375
419
                          # ('b-id', 'c', True, 'b => c/', 'renamed and modified'),
376
420
                         ], values)
386
430
 
387
431
        dlg = commit.CommitDialog(tree)
388
432
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
389
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
433
        self.assertEqual([("", "", True, 'All Files', ''),
390
434
                          ('a-id', 'a', True, 'a', 'removed'),
391
435
                          ('b-id', 'b', True, 'b/', 'removed'),
392
436
                         ], values)
401
445
 
402
446
        dlg = commit.CommitDialog(tree, selected='a')
403
447
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
404
 
        self.assertEqual([(None, None, False, 'All Files', ''),
 
448
        self.assertEqual([("", "", False, 'All Files', ''),
405
449
                          ('a-id', 'a', True, 'a', 'added'),
406
450
                          ('b-id', 'b', False, 'b/', 'added'),
407
451
                         ], values)
585
629
        tree.add(['a', 'b'], ['a-id', 'b-id'])
586
630
 
587
631
        dlg = commit.CommitDialog(tree)
588
 
        self.assertEqual([(None, None, True),
 
632
        self.assertEqual([("", "", True),
589
633
                          ('a-id', 'a', True),
590
634
                          ('b-id', 'b', True),
591
635
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
600
644
 
601
645
        # Toggle a single entry should set just that entry to False
602
646
        dlg._toggle_commit(None, 1, dlg._files_store)
603
 
        self.assertEqual([(None, None, True),
 
647
        self.assertEqual([("", "", True),
604
648
                          ('a-id', 'a', False),
605
649
                          ('b-id', 'b', True),
606
650
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
607
651
 
608
652
        # Toggling the main entry should set all entries
609
653
        dlg._toggle_commit(None, 0, dlg._files_store)
610
 
        self.assertEqual([(None, None, False),
 
654
        self.assertEqual([("", "", False),
611
655
                          ('a-id', 'a', False),
612
656
                          ('b-id', 'b', False),
613
657
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
614
658
 
615
659
        dlg._toggle_commit(None, 2, dlg._files_store)
616
 
        self.assertEqual([(None, None, False),
 
660
        self.assertEqual([("", "", False),
617
661
                          ('a-id', 'a', False),
618
662
                          ('b-id', 'b', True),
619
663
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
620
664
 
621
665
        dlg._toggle_commit(None, 0, dlg._files_store)
622
 
        self.assertEqual([(None, None, True),
 
666
        self.assertEqual([("", "", True),
623
667
                          ('a-id', 'a', True),
624
668
                          ('b-id', 'b', True),
625
669
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
1254
1298
        self.assertEquals(u'', self._get_commit_message())
1255
1299
        self.assertEquals(u'de',
1256
1300
                          self._get_file_commit_messages())
 
1301
 
 
1302
 
 
1303
class BzrHandlePatchTestCase(tests.TestCase):
 
1304
 
 
1305
    def setUp(self):
 
1306
        top = os.path.abspath(os.path.join(
 
1307
            os.path.dirname(__file__), os.pardir))
 
1308
        self.script = os.path.join(top, 'bzr-handle-patch')
 
1309
        self.env = dict(os.environ)
 
1310
        self.env['BZR_PLUGINS_AT'] = 'gtk@%s' % top
 
1311
        self.patch = NamedTemporaryFile()
 
1312
        self.patch.write('\n'.join([
 
1313
            "=== added file '_test.txt'",
 
1314
            "--- _test.txt      1970-01-01 00:00:00 +0000",
 
1315
            "+++ _test.txt      2012-02-03 20:00:34 +0000",
 
1316
            "@@ -0,0 +1,1 @@",
 
1317
            "+hello",
 
1318
            ]))
 
1319
        self.patch.flush()
 
1320
        super(BzrHandlePatchTestCase, self).setUp()
 
1321
 
 
1322
    def test_smoketest(self):
 
1323
        # This is a smoke test to verify the process starts.
 
1324
        bzr_notify = subprocess.Popen(
 
1325
            [self.script, self.patch.name, 'test'],
 
1326
            stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=self.env)
 
1327
        stdout, stderr = bzr_notify.communicate()
 
1328
        self.assertEqual('', stdout)
 
1329
        self.assertEqual('', stderr)