/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: 2012-07-09 15:23:26 UTC
  • mto: This revision was merged to the branch mainline in revision 794.
  • Revision ID: jelmer@samba.org-20120709152326-dzxb8zoz0btull7n
Remove bzr-notify.

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