/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-12-20 16:16:57 UTC
  • Revision ID: jelmer@canonical.com-20111220161657-zjn6rqjrw8ouehf8
Drop support for old bencode location.

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
 
37
35
    commit,
38
36
    commitmsgs,
39
37
    )
40
 
from bzrlib.plugins.gtk.commitmsgs import SavedCommitMessagesManager
41
 
from bzrlib.plugins.gtk.tests import MockMethod
42
38
 
43
39
 
44
40
# TODO: All we need is basic ancestry code to test this, we shouldn't need a
51
47
        tree.commit('one')
52
48
 
53
49
        self.addCleanup(tree.lock_read().unlock)
54
 
        self.assertEquals([], list(commit.pending_revisions(tree)))
 
50
        self.assertIs(None, commit.pending_revisions(tree))
55
51
 
56
52
    def test_pending_revisions_simple(self):
57
53
        tree = self.make_branch_and_tree('tree')
62
58
        self.assertEqual([rev_id1, rev_id2], tree.get_parent_ids())
63
59
 
64
60
        self.addCleanup(tree.lock_read().unlock)
65
 
        pending_revisions = list(commit.pending_revisions(tree))
 
61
        pending_revisions = commit.pending_revisions(tree)
66
62
        # One primary merge
67
63
        self.assertEqual(1, len(pending_revisions))
68
64
        # Revision == rev_id2
81
77
        self.assertEqual([rev_id1, rev_id4], tree.get_parent_ids())
82
78
 
83
79
        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
105
101
        self.assertEqual([rev_id1, rev_id3, rev_id5], tree.get_parent_ids())
106
102
 
107
103
        self.addCleanup(tree.lock_read().unlock)
108
 
        pending_revisions = list(commit.pending_revisions(tree))
 
104
        pending_revisions = commit.pending_revisions(tree)
109
105
        # Two primary merges
110
106
        self.assertEqual(2, len(pending_revisions))
111
107
        # Revision == rev_id2
148
144
 
149
145
class TestCommitDialogSimple(tests.TestCaseWithTransport):
150
146
 
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
147
    def test_setup_parameters_no_pending(self):
172
148
        tree = self.make_branch_and_tree('tree')
173
149
        rev_id = tree.commit('first')
174
150
 
175
151
        dlg = CommitDialogNoWidgets(tree)
176
152
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
177
 
        self.assertEquals([], dlg._pending)
 
153
        self.assertIs(None, dlg._pending)
178
154
        self.assertFalse(dlg._is_checkout)
179
155
 
180
156
    def test_setup_parameters_checkout(self):
185
161
 
186
162
        dlg = CommitDialogNoWidgets(tree2)
187
163
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
188
 
        self.assertEquals([], dlg._pending)
 
164
        self.assertIs(None, dlg._pending)
189
165
        self.assertTrue(dlg._is_checkout)
190
166
 
191
167
    def test_setup_parameters_pending(self):
216
192
        self.assertEqual([], delta.removed)
217
193
        self.assertEqual([(u'a', 'a-id', 'file')], delta.added)
218
194
 
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
 
    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
195
 
246
196
class TestCommitDialog(tests.TestCaseWithTransport):
247
197
 
346
296
 
347
297
        dlg = commit.CommitDialog(tree)
348
298
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
349
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
299
        self.assertEqual([(None, None, True, 'All Files', ''),
350
300
                          ('a-id', 'a', True, 'a', 'added'),
351
301
                          ('b-id', 'b', True, 'b/', 'added'),
352
302
                          ('c-id', 'b/c', True, 'b/c', 'added'),
363
313
 
364
314
        dlg = commit.CommitDialog(tree)
365
315
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
366
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
316
        self.assertEqual([(None, None, True, 'All Files', ''),
367
317
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
368
318
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed'),
369
319
                         ], values)
378
328
 
379
329
        dlg = commit.CommitDialog(tree)
380
330
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
381
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
331
        self.assertEqual([(None, None, True, 'All Files', ''),
382
332
                          ('a-id', 'a', True, 'a', 'modified'),
383
333
                         ], values)
384
334
 
398
348
 
399
349
        dlg = commit.CommitDialog(tree)
400
350
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
401
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
351
        self.assertEqual([(None, None, True, 'All Files', ''),
402
352
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
403
353
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed and modified'),
404
354
                          ('c-id', 'd/c', True, 'd/c', 'modified'),
421
371
 
422
372
        dlg = commit.CommitDialog(tree)
423
373
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
424
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
374
        self.assertEqual([(None, None, True, 'All Files', ''),
425
375
                          ('a-id', 'a', True, 'a => a/', 'kind changed'),
426
376
                          # ('b-id', 'c', True, 'b => c/', 'renamed and modified'),
427
377
                         ], values)
437
387
 
438
388
        dlg = commit.CommitDialog(tree)
439
389
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
440
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
390
        self.assertEqual([(None, None, True, 'All Files', ''),
441
391
                          ('a-id', 'a', True, 'a', 'removed'),
442
392
                          ('b-id', 'b', True, 'b/', 'removed'),
443
393
                         ], values)
452
402
 
453
403
        dlg = commit.CommitDialog(tree, selected='a')
454
404
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
455
 
        self.assertEqual([("", "", False, 'All Files', ''),
 
405
        self.assertEqual([(None, None, False, 'All Files', ''),
456
406
                          ('a-id', 'a', True, 'a', 'added'),
457
407
                          ('b-id', 'b', False, 'b/', 'added'),
458
408
                         ], values)
636
586
        tree.add(['a', 'b'], ['a-id', 'b-id'])
637
587
 
638
588
        dlg = commit.CommitDialog(tree)
639
 
        self.assertEqual([("", "", True),
 
589
        self.assertEqual([(None, None, True),
640
590
                          ('a-id', 'a', True),
641
591
                          ('b-id', 'b', True),
642
592
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
651
601
 
652
602
        # Toggle a single entry should set just that entry to False
653
603
        dlg._toggle_commit(None, 1, dlg._files_store)
654
 
        self.assertEqual([("", "", True),
 
604
        self.assertEqual([(None, None, True),
655
605
                          ('a-id', 'a', False),
656
606
                          ('b-id', 'b', True),
657
607
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
658
608
 
659
609
        # Toggling the main entry should set all entries
660
610
        dlg._toggle_commit(None, 0, dlg._files_store)
661
 
        self.assertEqual([("", "", False),
 
611
        self.assertEqual([(None, None, False),
662
612
                          ('a-id', 'a', False),
663
613
                          ('b-id', 'b', False),
664
614
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
665
615
 
666
616
        dlg._toggle_commit(None, 2, dlg._files_store)
667
 
        self.assertEqual([("", "", False),
 
617
        self.assertEqual([(None, None, False),
668
618
                          ('a-id', 'a', False),
669
619
                          ('b-id', 'b', True),
670
620
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
671
621
 
672
622
        dlg._toggle_commit(None, 0, dlg._files_store)
673
 
        self.assertEqual([("", "", True),
 
623
        self.assertEqual([(None, None, True),
674
624
                          ('a-id', 'a', True),
675
625
                          ('b-id', 'b', True),
676
626
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
1305
1255
        self.assertEquals(u'', self._get_commit_message())
1306
1256
        self.assertEquals(u'de',
1307
1257
                          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)