/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: Jelmer Vernooij
  • Date: 2011-11-06 00:49:02 UTC
  • Revision ID: jelmer@samba.org-20111106004902-rchmxi3vfy6zj8tn
Fix typo in setup.py.

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
 
31
29
    from bzrlib.tests.features import UnicodeFilenameFeature
32
30
except ImportError: # bzr < 2.5
33
31
    from bzrlib.tests import UnicodeFilenameFeature
34
 
from bzrlib import bencode
 
32
try:
 
33
    from bzrlib import bencode
 
34
except ImportError:
 
35
    from bzrlib.util import bencode
35
36
 
36
37
from bzrlib.plugins.gtk import (
37
38
    commit,
38
39
    commitmsgs,
39
40
    )
40
 
from bzrlib.plugins.gtk.commitmsgs import SavedCommitMessagesManager
41
 
from bzrlib.plugins.gtk.tests import MockMethod
42
41
 
43
42
 
44
43
# TODO: All we need is basic ancestry code to test this, we shouldn't need a
50
49
        tree = self.make_branch_and_tree('.')
51
50
        tree.commit('one')
52
51
 
53
 
        self.addCleanup(tree.lock_read().unlock)
54
 
        self.assertEquals([], list(commit.pending_revisions(tree)))
 
52
        self.assertIs(None, commit.pending_revisions(tree))
55
53
 
56
54
    def test_pending_revisions_simple(self):
57
55
        tree = self.make_branch_and_tree('tree')
61
59
        tree.merge_from_branch(tree2.branch)
62
60
        self.assertEqual([rev_id1, rev_id2], tree.get_parent_ids())
63
61
 
64
 
        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
80
77
        tree.merge_from_branch(tree2.branch)
81
78
        self.assertEqual([rev_id1, rev_id4], tree.get_parent_ids())
82
79
 
83
 
        self.addCleanup(tree.lock_read().unlock)
84
 
        pending_revisions = list(commit.pending_revisions(tree))
 
80
        pending_revisions = commit.pending_revisions(tree)
85
81
        # One primary merge
86
82
        self.assertEqual(1, len(pending_revisions))
87
83
        # Revision == rev_id2
104
100
        tree.merge_from_branch(tree3.branch, force=True)
105
101
        self.assertEqual([rev_id1, rev_id3, rev_id5], tree.get_parent_ids())
106
102
 
107
 
        self.addCleanup(tree.lock_read().unlock)
108
 
        pending_revisions = list(commit.pending_revisions(tree))
 
103
        pending_revisions = commit.pending_revisions(tree)
109
104
        # Two primary merges
110
105
        self.assertEqual(2, len(pending_revisions))
111
106
        # Revision == rev_id2
148
143
 
149
144
class TestCommitDialogSimple(tests.TestCaseWithTransport):
150
145
 
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
146
    def test_setup_parameters_no_pending(self):
172
147
        tree = self.make_branch_and_tree('tree')
173
148
        rev_id = tree.commit('first')
174
149
 
175
150
        dlg = CommitDialogNoWidgets(tree)
176
151
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
177
 
        self.assertEquals([], dlg._pending)
 
152
        self.assertIs(None, dlg._pending)
178
153
        self.assertFalse(dlg._is_checkout)
179
154
 
180
155
    def test_setup_parameters_checkout(self):
185
160
 
186
161
        dlg = CommitDialogNoWidgets(tree2)
187
162
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
188
 
        self.assertEquals([], dlg._pending)
 
163
        self.assertIs(None, dlg._pending)
189
164
        self.assertTrue(dlg._is_checkout)
190
165
 
191
166
    def test_setup_parameters_pending(self):
216
191
        self.assertEqual([], delta.removed)
217
192
        self.assertEqual([(u'a', 'a-id', 'file')], delta.added)
218
193
 
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
194
 
239
195
class TestCommitDialog(tests.TestCaseWithTransport):
240
196
 
339
295
 
340
296
        dlg = commit.CommitDialog(tree)
341
297
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
342
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
298
        self.assertEqual([(None, None, True, 'All Files', ''),
343
299
                          ('a-id', 'a', True, 'a', 'added'),
344
300
                          ('b-id', 'b', True, 'b/', 'added'),
345
301
                          ('c-id', 'b/c', True, 'b/c', 'added'),
356
312
 
357
313
        dlg = commit.CommitDialog(tree)
358
314
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
359
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
315
        self.assertEqual([(None, None, True, 'All Files', ''),
360
316
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
361
317
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed'),
362
318
                         ], values)
371
327
 
372
328
        dlg = commit.CommitDialog(tree)
373
329
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
374
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
330
        self.assertEqual([(None, None, True, 'All Files', ''),
375
331
                          ('a-id', 'a', True, 'a', 'modified'),
376
332
                         ], values)
377
333
 
391
347
 
392
348
        dlg = commit.CommitDialog(tree)
393
349
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
394
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
350
        self.assertEqual([(None, None, True, 'All Files', ''),
395
351
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
396
352
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed and modified'),
397
353
                          ('c-id', 'd/c', True, 'd/c', 'modified'),
414
370
 
415
371
        dlg = commit.CommitDialog(tree)
416
372
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
417
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
373
        self.assertEqual([(None, None, True, 'All Files', ''),
418
374
                          ('a-id', 'a', True, 'a => a/', 'kind changed'),
419
375
                          # ('b-id', 'c', True, 'b => c/', 'renamed and modified'),
420
376
                         ], values)
430
386
 
431
387
        dlg = commit.CommitDialog(tree)
432
388
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
433
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
389
        self.assertEqual([(None, None, True, 'All Files', ''),
434
390
                          ('a-id', 'a', True, 'a', 'removed'),
435
391
                          ('b-id', 'b', True, 'b/', 'removed'),
436
392
                         ], values)
445
401
 
446
402
        dlg = commit.CommitDialog(tree, selected='a')
447
403
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
448
 
        self.assertEqual([("", "", False, 'All Files', ''),
 
404
        self.assertEqual([(None, None, False, 'All Files', ''),
449
405
                          ('a-id', 'a', True, 'a', 'added'),
450
406
                          ('b-id', 'b', False, 'b/', 'added'),
451
407
                         ], values)
629
585
        tree.add(['a', 'b'], ['a-id', 'b-id'])
630
586
 
631
587
        dlg = commit.CommitDialog(tree)
632
 
        self.assertEqual([("", "", True),
 
588
        self.assertEqual([(None, None, True),
633
589
                          ('a-id', 'a', True),
634
590
                          ('b-id', 'b', True),
635
591
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
644
600
 
645
601
        # Toggle a single entry should set just that entry to False
646
602
        dlg._toggle_commit(None, 1, dlg._files_store)
647
 
        self.assertEqual([("", "", True),
 
603
        self.assertEqual([(None, None, True),
648
604
                          ('a-id', 'a', False),
649
605
                          ('b-id', 'b', True),
650
606
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
651
607
 
652
608
        # Toggling the main entry should set all entries
653
609
        dlg._toggle_commit(None, 0, dlg._files_store)
654
 
        self.assertEqual([("", "", False),
 
610
        self.assertEqual([(None, None, False),
655
611
                          ('a-id', 'a', False),
656
612
                          ('b-id', 'b', False),
657
613
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
658
614
 
659
615
        dlg._toggle_commit(None, 2, dlg._files_store)
660
 
        self.assertEqual([("", "", False),
 
616
        self.assertEqual([(None, None, False),
661
617
                          ('a-id', 'a', False),
662
618
                          ('b-id', 'b', True),
663
619
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
664
620
 
665
621
        dlg._toggle_commit(None, 0, dlg._files_store)
666
 
        self.assertEqual([("", "", True),
 
622
        self.assertEqual([(None, None, True),
667
623
                          ('a-id', 'a', True),
668
624
                          ('b-id', 'b', True),
669
625
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
1298
1254
        self.assertEquals(u'', self._get_commit_message())
1299
1255
        self.assertEquals(u'de',
1300
1256
                          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)