/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: 2011-08-29 14:12:30 UTC
  • mto: This revision was merged to the branch mainline in revision 741.
  • Revision ID: sinzui.is@verizon.net-20110829141230-6nv7h0oxjrojb1y1
Updated hacking doc.

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
 
28
26
    uncommit,
29
27
    )
30
28
try:
31
 
    from bzrlib.tests.features import UnicodeFilenameFeature
32
 
except ImportError: # bzr < 2.5
33
 
    from bzrlib.tests import UnicodeFilenameFeature
34
 
from bzrlib import bencode
 
29
    from bzrlib import bencode
 
30
except ImportError:
 
31
    from bzrlib.util import bencode
35
32
 
36
 
from bzrlib.plugins.gtk import (
37
 
    commit,
38
 
    commitmsgs,
39
 
    )
40
 
from bzrlib.plugins.gtk.commitmsgs import SavedCommitMessagesManager
41
 
from bzrlib.plugins.gtk.tests import MockMethod
 
33
from bzrlib.plugins.gtk import commit
42
34
 
43
35
 
44
36
# TODO: All we need is basic ancestry code to test this, we shouldn't need a
50
42
        tree = self.make_branch_and_tree('.')
51
43
        tree.commit('one')
52
44
 
53
 
        self.addCleanup(tree.lock_read().unlock)
54
 
        self.assertEquals([], list(commit.pending_revisions(tree)))
 
45
        self.assertIs(None, commit.pending_revisions(tree))
55
46
 
56
47
    def test_pending_revisions_simple(self):
57
48
        tree = self.make_branch_and_tree('tree')
61
52
        tree.merge_from_branch(tree2.branch)
62
53
        self.assertEqual([rev_id1, rev_id2], tree.get_parent_ids())
63
54
 
64
 
        self.addCleanup(tree.lock_read().unlock)
65
 
        pending_revisions = list(commit.pending_revisions(tree))
 
55
        pending_revisions = commit.pending_revisions(tree)
66
56
        # One primary merge
67
57
        self.assertEqual(1, len(pending_revisions))
68
58
        # Revision == rev_id2
80
70
        tree.merge_from_branch(tree2.branch)
81
71
        self.assertEqual([rev_id1, rev_id4], tree.get_parent_ids())
82
72
 
83
 
        self.addCleanup(tree.lock_read().unlock)
84
 
        pending_revisions = list(commit.pending_revisions(tree))
 
73
        pending_revisions = commit.pending_revisions(tree)
85
74
        # One primary merge
86
75
        self.assertEqual(1, len(pending_revisions))
87
76
        # Revision == rev_id2
104
93
        tree.merge_from_branch(tree3.branch, force=True)
105
94
        self.assertEqual([rev_id1, rev_id3, rev_id5], tree.get_parent_ids())
106
95
 
107
 
        self.addCleanup(tree.lock_read().unlock)
108
 
        pending_revisions = list(commit.pending_revisions(tree))
 
96
        pending_revisions = commit.pending_revisions(tree)
109
97
        # Two primary merges
110
98
        self.assertEqual(2, len(pending_revisions))
111
99
        # Revision == rev_id2
148
136
 
149
137
class TestCommitDialogSimple(tests.TestCaseWithTransport):
150
138
 
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
 
 
171
139
    def test_setup_parameters_no_pending(self):
172
140
        tree = self.make_branch_and_tree('tree')
173
141
        rev_id = tree.commit('first')
174
142
 
175
143
        dlg = CommitDialogNoWidgets(tree)
176
144
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
177
 
        self.assertEquals([], dlg._pending)
 
145
        self.assertIs(None, dlg._pending)
178
146
        self.assertFalse(dlg._is_checkout)
179
147
 
180
148
    def test_setup_parameters_checkout(self):
185
153
 
186
154
        dlg = CommitDialogNoWidgets(tree2)
187
155
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
188
 
        self.assertEquals([], dlg._pending)
 
156
        self.assertIs(None, dlg._pending)
189
157
        self.assertTrue(dlg._is_checkout)
190
158
 
191
159
    def test_setup_parameters_pending(self):
216
184
        self.assertEqual([], delta.removed)
217
185
        self.assertEqual([(u'a', 'a-id', 'file')], delta.added)
218
186
 
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
 
 
238
187
 
239
188
class TestCommitDialog(tests.TestCaseWithTransport):
240
189
 
339
288
 
340
289
        dlg = commit.CommitDialog(tree)
341
290
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
342
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
291
        self.assertEqual([(None, None, True, 'All Files', ''),
343
292
                          ('a-id', 'a', True, 'a', 'added'),
344
293
                          ('b-id', 'b', True, 'b/', 'added'),
345
294
                          ('c-id', 'b/c', True, 'b/c', 'added'),
356
305
 
357
306
        dlg = commit.CommitDialog(tree)
358
307
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
359
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
308
        self.assertEqual([(None, None, True, 'All Files', ''),
360
309
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
361
310
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed'),
362
311
                         ], values)
371
320
 
372
321
        dlg = commit.CommitDialog(tree)
373
322
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
374
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
323
        self.assertEqual([(None, None, True, 'All Files', ''),
375
324
                          ('a-id', 'a', True, 'a', 'modified'),
376
325
                         ], values)
377
326
 
391
340
 
392
341
        dlg = commit.CommitDialog(tree)
393
342
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
394
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
343
        self.assertEqual([(None, None, True, 'All Files', ''),
395
344
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
396
345
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed and modified'),
397
346
                          ('c-id', 'd/c', True, 'd/c', 'modified'),
414
363
 
415
364
        dlg = commit.CommitDialog(tree)
416
365
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
417
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
366
        self.assertEqual([(None, None, True, 'All Files', ''),
418
367
                          ('a-id', 'a', True, 'a => a/', 'kind changed'),
419
368
                          # ('b-id', 'c', True, 'b => c/', 'renamed and modified'),
420
369
                         ], values)
430
379
 
431
380
        dlg = commit.CommitDialog(tree)
432
381
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
433
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
382
        self.assertEqual([(None, None, True, 'All Files', ''),
434
383
                          ('a-id', 'a', True, 'a', 'removed'),
435
384
                          ('b-id', 'b', True, 'b/', 'removed'),
436
385
                         ], values)
445
394
 
446
395
        dlg = commit.CommitDialog(tree, selected='a')
447
396
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
448
 
        self.assertEqual([("", "", False, 'All Files', ''),
 
397
        self.assertEqual([(None, None, False, 'All Files', ''),
449
398
                          ('a-id', 'a', True, 'a', 'added'),
450
399
                          ('b-id', 'b', False, 'b/', 'added'),
451
400
                         ], values)
629
578
        tree.add(['a', 'b'], ['a-id', 'b-id'])
630
579
 
631
580
        dlg = commit.CommitDialog(tree)
632
 
        self.assertEqual([("", "", True),
 
581
        self.assertEqual([(None, None, True),
633
582
                          ('a-id', 'a', True),
634
583
                          ('b-id', 'b', True),
635
584
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
644
593
 
645
594
        # Toggle a single entry should set just that entry to False
646
595
        dlg._toggle_commit(None, 1, dlg._files_store)
647
 
        self.assertEqual([("", "", True),
 
596
        self.assertEqual([(None, None, True),
648
597
                          ('a-id', 'a', False),
649
598
                          ('b-id', 'b', True),
650
599
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
651
600
 
652
601
        # Toggling the main entry should set all entries
653
602
        dlg._toggle_commit(None, 0, dlg._files_store)
654
 
        self.assertEqual([("", "", False),
 
603
        self.assertEqual([(None, None, False),
655
604
                          ('a-id', 'a', False),
656
605
                          ('b-id', 'b', False),
657
606
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
658
607
 
659
608
        dlg._toggle_commit(None, 2, dlg._files_store)
660
 
        self.assertEqual([("", "", False),
 
609
        self.assertEqual([(None, None, False),
661
610
                          ('a-id', 'a', False),
662
611
                          ('b-id', 'b', True),
663
612
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
664
613
 
665
614
        dlg._toggle_commit(None, 0, dlg._files_store)
666
 
        self.assertEqual([("", "", True),
 
615
        self.assertEqual([(None, None, True),
667
616
                          ('a-id', 'a', True),
668
617
                          ('b-id', 'b', True),
669
618
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
1101
1050
                         bencode.bdecode(file_info.encode('UTF-8')))
1102
1051
 
1103
1052
    def test_commit_unicode_messages(self):
1104
 
        self.requireFeature(UnicodeFilenameFeature)
 
1053
        self.requireFeature(tests.UnicodeFilenameFeature)
1105
1054
 
1106
1055
        tree = self.make_branch_and_tree('tree')
1107
1056
        tree.branch.get_config().set_user_option('per_file_commits', 'true')
1175
1124
        super(TestSavedCommitMessages, self).setUp()
1176
1125
        # Install our hook
1177
1126
        branch.Branch.hooks.install_named_hook(
1178
 
            'post_uncommit', commitmsgs.save_commit_messages, None)
 
1127
            'post_uncommit', commit.save_commit_messages, None)
1179
1128
 
1180
1129
    def _get_file_info_dict(self, rank):
1181
1130
        file_info = [dict(path='a', file_id='a-id', message='a msg %d' % rank),
1298
1247
        self.assertEquals(u'', self._get_commit_message())
1299
1248
        self.assertEquals(u'de',
1300
1249
                          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)