/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-04-02 12:42:35 UTC
  • Revision ID: jelmer@samba.org-20110402124235-h9cvzbawsk79fol3
RemoveĀ unusedĀ import.

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
 
from gi.repository import Gtk
 
21
import gtk
24
22
 
25
23
from bzrlib import (
26
24
    branch,
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
 
    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
187
 
246
188
class TestCommitDialog(tests.TestCaseWithTransport):
247
189
 
269
211
 
270
212
        commit_col = dlg._treeview_files.get_column(0)
271
213
        self.assertEqual('Commit', commit_col.get_title())
272
 
        renderer = commit_col.get_cells()[0]
 
214
        renderer = commit_col.get_cell_renderers()[0]
273
215
        self.assertTrue(renderer.get_property('activatable'))
274
216
 
275
217
        self.assertEqual('Commit all changes',
294
236
 
295
237
        commit_col = dlg._treeview_files.get_column(0)
296
238
        self.assertEqual('Commit*', commit_col.get_title())
297
 
        renderer = commit_col.get_cells()[0]
 
239
        renderer = commit_col.get_cell_renderers()[0]
298
240
        self.assertFalse(renderer.get_property('activatable'))
299
241
 
300
242
        values = [(r[0], r[1], r[2], r[3]) for r in dlg._pending_store]
346
288
 
347
289
        dlg = commit.CommitDialog(tree)
348
290
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
349
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
291
        self.assertEqual([(None, None, True, 'All Files', ''),
350
292
                          ('a-id', 'a', True, 'a', 'added'),
351
293
                          ('b-id', 'b', True, 'b/', 'added'),
352
294
                          ('c-id', 'b/c', True, 'b/c', 'added'),
363
305
 
364
306
        dlg = commit.CommitDialog(tree)
365
307
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
366
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
308
        self.assertEqual([(None, None, True, 'All Files', ''),
367
309
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
368
310
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed'),
369
311
                         ], values)
378
320
 
379
321
        dlg = commit.CommitDialog(tree)
380
322
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
381
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
323
        self.assertEqual([(None, None, True, 'All Files', ''),
382
324
                          ('a-id', 'a', True, 'a', 'modified'),
383
325
                         ], values)
384
326
 
398
340
 
399
341
        dlg = commit.CommitDialog(tree)
400
342
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
401
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
343
        self.assertEqual([(None, None, True, 'All Files', ''),
402
344
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
403
345
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed and modified'),
404
346
                          ('c-id', 'd/c', True, 'd/c', 'modified'),
421
363
 
422
364
        dlg = commit.CommitDialog(tree)
423
365
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
424
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
366
        self.assertEqual([(None, None, True, 'All Files', ''),
425
367
                          ('a-id', 'a', True, 'a => a/', 'kind changed'),
426
368
                          # ('b-id', 'c', True, 'b => c/', 'renamed and modified'),
427
369
                         ], values)
437
379
 
438
380
        dlg = commit.CommitDialog(tree)
439
381
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
440
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
382
        self.assertEqual([(None, None, True, 'All Files', ''),
441
383
                          ('a-id', 'a', True, 'a', 'removed'),
442
384
                          ('b-id', 'b', True, 'b/', 'removed'),
443
385
                         ], values)
444
386
        # All Files should be selected
445
 
        self.assertEqual(
446
 
            (Gtk.TreePath(path=0), None), dlg._treeview_files.get_cursor())
 
387
        self.assertEqual(((0,), None), dlg._treeview_files.get_cursor())
447
388
 
448
389
    def test_filelist_with_selected(self):
449
390
        tree = self.make_branch_and_tree('tree')
452
393
 
453
394
        dlg = commit.CommitDialog(tree, selected='a')
454
395
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
455
 
        self.assertEqual([("", "", False, 'All Files', ''),
 
396
        self.assertEqual([(None, None, False, 'All Files', ''),
456
397
                          ('a-id', 'a', True, 'a', 'added'),
457
398
                          ('b-id', 'b', False, 'b/', 'added'),
458
399
                         ], values)
459
400
        # This file should also be selected in the file list, rather than the
460
401
        # 'All Files' selection
461
 
        self.assertEqual(
462
 
            (Gtk.TreePath(path=1), None), dlg._treeview_files.get_cursor())
 
402
        self.assertEqual(((1,), None), dlg._treeview_files.get_cursor())
463
403
 
464
404
    def test_diff_view(self):
465
405
        tree = self.make_branch_and_tree('tree')
473
413
        dlg = commit.CommitDialog(tree)
474
414
        diff_buffer = dlg._diff_view.buffer
475
415
        text = diff_buffer.get_text(diff_buffer.get_start_iter(),
476
 
                                    diff_buffer.get_end_iter(),
477
 
                                    True).splitlines(True)
 
416
                                    diff_buffer.get_end_iter()).splitlines(True)
478
417
 
479
418
        self.assertEqual("=== modified file 'a'\n", text[0])
480
419
        self.assertContainsRe(text[1],
525
464
        self.assertFalse(dlg._file_message_expander.get_expanded())
526
465
        self.assertFalse(dlg._file_message_expander.get_property('sensitive'))
527
466
 
528
 
        dlg._treeview_files.set_cursor(
529
 
            Gtk.TreePath(path=1), None, False)
 
467
        dlg._treeview_files.set_cursor((1,))
530
468
        self.assertEqual('Diff for a', dlg._diff_label.get_text())
531
469
        text = diff_buffer.get_text(diff_buffer.get_start_iter(),
532
 
                                    diff_buffer.get_end_iter(),
533
 
                                    True).splitlines(True)
 
470
                                    diff_buffer.get_end_iter()).splitlines(True)
534
471
        self.assertEqual("=== added file 'a'\n", text[0])
535
472
        self.assertContainsRe(text[1],
536
473
            r"--- a\t\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d [+-]\d\d\d\d")
544
481
        self.assertTrue(dlg._file_message_expander.get_expanded())
545
482
        self.assertTrue(dlg._file_message_expander.get_property('sensitive'))
546
483
 
547
 
        dlg._treeview_files.set_cursor(
548
 
            Gtk.TreePath(path=2), None, False)
 
484
        dlg._treeview_files.set_cursor((2,))
549
485
        self.assertEqual('Diff for b', dlg._diff_label.get_text())
550
486
        text = diff_buffer.get_text(diff_buffer.get_start_iter(),
551
 
                                    diff_buffer.get_end_iter(),
552
 
                                    True).splitlines(True)
 
487
                                    diff_buffer.get_end_iter()).splitlines(True)
553
488
        self.assertEqual("=== added file 'b'\n", text[0])
554
489
        self.assertContainsRe(text[1],
555
490
            r"--- b\t\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d [+-]\d\d\d\d")
563
498
        self.assertTrue(dlg._file_message_expander.get_expanded())
564
499
        self.assertTrue(dlg._file_message_expander.get_property('sensitive'))
565
500
 
566
 
        dlg._treeview_files.set_cursor(
567
 
            Gtk.TreePath(path=0), None, False)
 
501
        dlg._treeview_files.set_cursor((0,))
568
502
        self.assertEqual('Diff for All Files', dlg._diff_label.get_text())
569
503
        self.assertEqual('File commit message',
570
504
                         dlg._file_message_expander.get_label())
580
514
 
581
515
        def get_file_text():
582
516
            buf = dlg._file_message_text_view.get_buffer()
583
 
            return buf.get_text(
584
 
                buf.get_start_iter(), buf.get_end_iter(), True)
 
517
            return buf.get_text(buf.get_start_iter(), buf.get_end_iter())
585
518
 
586
519
        def get_saved_text(path):
587
520
            """Get the saved text for a given record."""
594
527
        self.assertFalse(dlg._file_message_expander.get_property('sensitive'))
595
528
        self.assertEqual('', get_file_text())
596
529
 
597
 
        dlg._treeview_files.set_cursor(
598
 
            Gtk.TreePath(path=1), None, False)
 
530
        dlg._treeview_files.set_cursor((1,))
599
531
        self.assertEqual('Commit message for a',
600
532
                         dlg._file_message_expander.get_label())
601
533
        self.assertTrue(dlg._file_message_expander.get_expanded())
608
540
        # We should have updated the ListStore with the new file commit info
609
541
        self.assertEqual('Some text\nfor a\n', get_saved_text(1))
610
542
 
611
 
        dlg._treeview_files.set_cursor(
612
 
            Gtk.TreePath(path=2), None, False)
 
543
        dlg._treeview_files.set_cursor((2,))
613
544
        self.assertEqual('Commit message for b/',
614
545
                         dlg._file_message_expander.get_label())
615
546
        self.assertTrue(dlg._file_message_expander.get_expanded())
620
551
        dlg._set_file_commit_message('More text\nfor b\n')
621
552
        # Now switch back to 'a'. The message should be saved, and the buffer
622
553
        # should be updated with the other text
623
 
        dlg._treeview_files.set_cursor(
624
 
            Gtk.TreePath(path=1), None, False)
 
554
        dlg._treeview_files.set_cursor((1,))
625
555
        self.assertEqual('More text\nfor b\n', get_saved_text(2))
626
556
        self.assertEqual('Commit message for a',
627
557
                         dlg._file_message_expander.get_label())
636
566
        tree.add(['a', 'b'], ['a-id', 'b-id'])
637
567
 
638
568
        dlg = commit.CommitDialog(tree)
639
 
        self.assertEqual([("", "", True),
 
569
        self.assertEqual([(None, None, True),
640
570
                          ('a-id', 'a', True),
641
571
                          ('b-id', 'b', True),
642
572
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
647
577
        #       do with. So instead, we just call toggle directly, and assume
648
578
        #       that toggle is hooked in correctly
649
579
        # column = dlg._treeview_files.get_column(0)
650
 
        # renderer = column.get_cells()[0]
 
580
        # renderer = column.get_cell_renderers()[0]
651
581
 
652
582
        # Toggle a single entry should set just that entry to False
653
583
        dlg._toggle_commit(None, 1, dlg._files_store)
654
 
        self.assertEqual([("", "", True),
 
584
        self.assertEqual([(None, None, True),
655
585
                          ('a-id', 'a', False),
656
586
                          ('b-id', 'b', True),
657
587
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
658
588
 
659
589
        # Toggling the main entry should set all entries
660
590
        dlg._toggle_commit(None, 0, dlg._files_store)
661
 
        self.assertEqual([("", "", False),
 
591
        self.assertEqual([(None, None, False),
662
592
                          ('a-id', 'a', False),
663
593
                          ('b-id', 'b', False),
664
594
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
665
595
 
666
596
        dlg._toggle_commit(None, 2, dlg._files_store)
667
 
        self.assertEqual([("", "", False),
 
597
        self.assertEqual([(None, None, False),
668
598
                          ('a-id', 'a', False),
669
599
                          ('b-id', 'b', True),
670
600
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
671
601
 
672
602
        dlg._toggle_commit(None, 0, dlg._files_store)
673
 
        self.assertEqual([("", "", True),
 
603
        self.assertEqual([(None, None, True),
674
604
                          ('a-id', 'a', True),
675
605
                          ('b-id', 'b', True),
676
606
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
700
630
        dlg._commit_selected_radio.set_active(True)
701
631
        self.assertEqual((['a_file', 'b_dir'], []), dlg._get_specific_files())
702
632
 
703
 
        dlg._treeview_files.set_cursor(
704
 
            Gtk.TreePath(path=1), None, False)
 
633
        dlg._treeview_files.set_cursor((1,))
705
634
        dlg._set_file_commit_message('Test\nmessage\nfor a_file\n')
706
 
        dlg._treeview_files.set_cursor(
707
 
            Gtk.TreePath(path=2), None, False)
 
635
        dlg._treeview_files.set_cursor((2,))
708
636
        dlg._set_file_commit_message('message\nfor b_dir\n')
709
637
 
710
638
        self.assertEqual((['a_file', 'b_dir'],
730
658
        dlg._commit_selected_radio.set_active(True)
731
659
        self.assertEqual((['a_file', 'b_dir'], []), dlg._get_specific_files())
732
660
 
733
 
        dlg._treeview_files.set_cursor(
734
 
            Gtk.TreePath(path=1), None, False)
 
661
        dlg._treeview_files.set_cursor((1,))
735
662
        dlg._set_file_commit_message('Test\r\nmessage\rfor a_file\n')
736
 
        dlg._treeview_files.set_cursor(
737
 
            Gtk.TreePath(path=2), None, False)
 
663
        dlg._treeview_files.set_cursor((2,))
738
664
        dlg._set_file_commit_message('message\r\nfor\nb_dir\r')
739
665
 
740
666
        self.assertEqual((['a_file', 'b_dir'],
753
679
        def _question_yes(*args, **kwargs):
754
680
            self.questions.append(args)
755
681
            self.questions.append('YES')
756
 
            return Gtk.ResponseType.YES
 
682
            return gtk.RESPONSE_YES
757
683
        dlg._question_dialog = _question_yes
758
684
 
759
685
    def _set_question_no(self, dlg):
762
688
        def _question_no(*args, **kwargs):
763
689
            self.questions.append(args)
764
690
            self.questions.append('NO')
765
 
            return Gtk.ResponseType.NO
 
691
            return gtk.RESPONSE_NO
766
692
        dlg._question_dialog = _question_no
767
693
 
768
694
 
1047
973
 
1048
974
        dlg = commit.CommitDialog(tree)
1049
975
        dlg._commit_selected_radio.set_active(True) # enable partial
1050
 
        dlg._treeview_files.set_cursor(
1051
 
            Gtk.TreePath(path=1), None, False)
 
976
        dlg._treeview_files.set_cursor((1,))
1052
977
        dlg._set_file_commit_message('Message for A\n')
1053
 
        dlg._treeview_files.set_cursor(
1054
 
            Gtk.TreePath(path=2), None, False)
 
978
        dlg._treeview_files.set_cursor((2,))
1055
979
        dlg._set_file_commit_message('Message for B\n')
1056
980
        dlg._toggle_commit(None, 2, dlg._files_store) # unset 'b'
1057
981
        dlg._set_global_commit_message('Commit just "a"')
1084
1008
        tree.merge_from_branch(tree2.branch)
1085
1009
 
1086
1010
        dlg = commit.CommitDialog(tree)
1087
 
        dlg._treeview_files.set_cursor(
1088
 
            Gtk.TreePath(path=1), None, False) # 'a'
 
1011
        dlg._treeview_files.set_cursor((1,)) # 'a'
1089
1012
        dlg._set_file_commit_message('Message for A\n')
1090
1013
        # No message for 'B'
1091
1014
        dlg._set_global_commit_message('Merging from "tree2"\n')
1108
1031
                         bencode.bdecode(file_info.encode('UTF-8')))
1109
1032
 
1110
1033
    def test_commit_unicode_messages(self):
1111
 
        self.requireFeature(UnicodeFilenameFeature)
 
1034
        self.requireFeature(tests.UnicodeFilenameFeature)
1112
1035
 
1113
1036
        tree = self.make_branch_and_tree('tree')
1114
1037
        tree.branch.get_config().set_user_option('per_file_commits', 'true')
1116
1039
        tree.add(['a', u'\u03a9'], ['a-id', 'omega-id'])
1117
1040
 
1118
1041
        dlg = commit.CommitDialog(tree)
1119
 
        dlg._treeview_files.set_cursor(
1120
 
            Gtk.TreePath(path=1), None, False) # 'a'
 
1042
        dlg._treeview_files.set_cursor((1,)) # 'a'
1121
1043
        dlg._set_file_commit_message(u'Test \xfan\xecc\xf6de\n')
1122
 
        dlg._treeview_files.set_cursor(
1123
 
            Gtk.TreePath(path=2), None, False) # omega
 
1044
        dlg._treeview_files.set_cursor((2,)) # omega
1124
1045
        dlg._set_file_commit_message(u'\u03a9 is the end of all things.\n')
1125
1046
        dlg._set_global_commit_message(u'\u03a9 and \xfan\xecc\xf6de\n')
1126
1047
 
1182
1103
        super(TestSavedCommitMessages, self).setUp()
1183
1104
        # Install our hook
1184
1105
        branch.Branch.hooks.install_named_hook(
1185
 
            'post_uncommit', commitmsgs.save_commit_messages, None)
 
1106
            'post_uncommit', commit.save_commit_messages, None)
1186
1107
 
1187
1108
    def _get_file_info_dict(self, rank):
1188
1109
        file_info = [dict(path='a', file_id='a-id', message='a msg %d' % rank),
1305
1226
        self.assertEquals(u'', self._get_commit_message())
1306
1227
        self.assertEquals(u'de',
1307
1228
                          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)