/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-03-29 13:15:14 UTC
  • mfrom: (786.1.1 register-lazy)
  • Revision ID: jelmer@samba.org-20120329131514-knrl1w2wzntx89rv
Use lazy registration.

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
50
51
        tree.commit('one')
51
52
 
52
53
        self.addCleanup(tree.lock_read().unlock)
53
 
        self.assertIs(None, commit.pending_revisions(tree))
 
54
        self.assertEquals([], list(commit.pending_revisions(tree)))
54
55
 
55
56
    def test_pending_revisions_simple(self):
56
57
        tree = self.make_branch_and_tree('tree')
61
62
        self.assertEqual([rev_id1, rev_id2], tree.get_parent_ids())
62
63
 
63
64
        self.addCleanup(tree.lock_read().unlock)
64
 
        pending_revisions = commit.pending_revisions(tree)
 
65
        pending_revisions = list(commit.pending_revisions(tree))
65
66
        # One primary merge
66
67
        self.assertEqual(1, len(pending_revisions))
67
68
        # Revision == rev_id2
80
81
        self.assertEqual([rev_id1, rev_id4], tree.get_parent_ids())
81
82
 
82
83
        self.addCleanup(tree.lock_read().unlock)
83
 
        pending_revisions = commit.pending_revisions(tree)
 
84
        pending_revisions = list(commit.pending_revisions(tree))
84
85
        # One primary merge
85
86
        self.assertEqual(1, len(pending_revisions))
86
87
        # Revision == rev_id2
104
105
        self.assertEqual([rev_id1, rev_id3, rev_id5], tree.get_parent_ids())
105
106
 
106
107
        self.addCleanup(tree.lock_read().unlock)
107
 
        pending_revisions = commit.pending_revisions(tree)
 
108
        pending_revisions = list(commit.pending_revisions(tree))
108
109
        # Two primary merges
109
110
        self.assertEqual(2, len(pending_revisions))
110
111
        # Revision == rev_id2
147
148
 
148
149
class TestCommitDialogSimple(tests.TestCaseWithTransport):
149
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
 
150
171
    def test_setup_parameters_no_pending(self):
151
172
        tree = self.make_branch_and_tree('tree')
152
173
        rev_id = tree.commit('first')
153
174
 
154
175
        dlg = CommitDialogNoWidgets(tree)
155
176
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
156
 
        self.assertIs(None, dlg._pending)
 
177
        self.assertEquals([], dlg._pending)
157
178
        self.assertFalse(dlg._is_checkout)
158
179
 
159
180
    def test_setup_parameters_checkout(self):
164
185
 
165
186
        dlg = CommitDialogNoWidgets(tree2)
166
187
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
167
 
        self.assertIs(None, dlg._pending)
 
188
        self.assertEquals([], dlg._pending)
168
189
        self.assertTrue(dlg._is_checkout)
169
190
 
170
191
    def test_setup_parameters_pending(self):
195
216
        self.assertEqual([], delta.removed)
196
217
        self.assertEqual([(u'a', 'a-id', 'file')], delta.added)
197
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
 
198
245
 
199
246
class TestCommitDialog(tests.TestCaseWithTransport):
200
247
 
299
346
 
300
347
        dlg = commit.CommitDialog(tree)
301
348
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
302
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
349
        self.assertEqual([("", "", True, 'All Files', ''),
303
350
                          ('a-id', 'a', True, 'a', 'added'),
304
351
                          ('b-id', 'b', True, 'b/', 'added'),
305
352
                          ('c-id', 'b/c', True, 'b/c', 'added'),
316
363
 
317
364
        dlg = commit.CommitDialog(tree)
318
365
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
319
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
366
        self.assertEqual([("", "", True, 'All Files', ''),
320
367
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
321
368
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed'),
322
369
                         ], values)
331
378
 
332
379
        dlg = commit.CommitDialog(tree)
333
380
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
334
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
381
        self.assertEqual([("", "", True, 'All Files', ''),
335
382
                          ('a-id', 'a', True, 'a', 'modified'),
336
383
                         ], values)
337
384
 
351
398
 
352
399
        dlg = commit.CommitDialog(tree)
353
400
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
354
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
401
        self.assertEqual([("", "", True, 'All Files', ''),
355
402
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
356
403
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed and modified'),
357
404
                          ('c-id', 'd/c', True, 'd/c', 'modified'),
374
421
 
375
422
        dlg = commit.CommitDialog(tree)
376
423
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
377
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
424
        self.assertEqual([("", "", True, 'All Files', ''),
378
425
                          ('a-id', 'a', True, 'a => a/', 'kind changed'),
379
426
                          # ('b-id', 'c', True, 'b => c/', 'renamed and modified'),
380
427
                         ], values)
390
437
 
391
438
        dlg = commit.CommitDialog(tree)
392
439
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
393
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
440
        self.assertEqual([("", "", True, 'All Files', ''),
394
441
                          ('a-id', 'a', True, 'a', 'removed'),
395
442
                          ('b-id', 'b', True, 'b/', 'removed'),
396
443
                         ], values)
405
452
 
406
453
        dlg = commit.CommitDialog(tree, selected='a')
407
454
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
408
 
        self.assertEqual([(None, None, False, 'All Files', ''),
 
455
        self.assertEqual([("", "", False, 'All Files', ''),
409
456
                          ('a-id', 'a', True, 'a', 'added'),
410
457
                          ('b-id', 'b', False, 'b/', 'added'),
411
458
                         ], values)
589
636
        tree.add(['a', 'b'], ['a-id', 'b-id'])
590
637
 
591
638
        dlg = commit.CommitDialog(tree)
592
 
        self.assertEqual([(None, None, True),
 
639
        self.assertEqual([("", "", True),
593
640
                          ('a-id', 'a', True),
594
641
                          ('b-id', 'b', True),
595
642
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
604
651
 
605
652
        # Toggle a single entry should set just that entry to False
606
653
        dlg._toggle_commit(None, 1, dlg._files_store)
607
 
        self.assertEqual([(None, None, True),
 
654
        self.assertEqual([("", "", True),
608
655
                          ('a-id', 'a', False),
609
656
                          ('b-id', 'b', True),
610
657
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
611
658
 
612
659
        # Toggling the main entry should set all entries
613
660
        dlg._toggle_commit(None, 0, dlg._files_store)
614
 
        self.assertEqual([(None, None, False),
 
661
        self.assertEqual([("", "", False),
615
662
                          ('a-id', 'a', False),
616
663
                          ('b-id', 'b', False),
617
664
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
618
665
 
619
666
        dlg._toggle_commit(None, 2, dlg._files_store)
620
 
        self.assertEqual([(None, None, False),
 
667
        self.assertEqual([("", "", False),
621
668
                          ('a-id', 'a', False),
622
669
                          ('b-id', 'b', True),
623
670
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
624
671
 
625
672
        dlg._toggle_commit(None, 0, dlg._files_store)
626
 
        self.assertEqual([(None, None, True),
 
673
        self.assertEqual([("", "", True),
627
674
                          ('a-id', 'a', True),
628
675
                          ('b-id', 'b', True),
629
676
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
1258
1305
        self.assertEquals(u'', self._get_commit_message())
1259
1306
        self.assertEquals(u'de',
1260
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)