/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-06 14:53:44 UTC
  • Revision ID: jelmer@samba.org-20110406145344-m6s0i7q7ssjwhmwq
Support use without gtk.Spinner, which is only available in pygtk >= 2.22.

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
45
        self.assertIs(None, commit.pending_revisions(tree))
55
46
 
56
47
    def test_pending_revisions_simple(self):
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
55
        pending_revisions = commit.pending_revisions(tree)
66
56
        # One primary merge
67
57
        self.assertEqual(1, len(pending_revisions))
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
73
        pending_revisions = commit.pending_revisions(tree)
85
74
        # One primary merge
86
75
        self.assertEqual(1, len(pending_revisions))
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
96
        pending_revisions = commit.pending_revisions(tree)
109
97
        # Two primary merges
110
98
        self.assertEqual(2, len(pending_revisions))
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')
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
187
 
239
188
class TestCommitDialog(tests.TestCaseWithTransport):
240
189
 
262
211
 
263
212
        commit_col = dlg._treeview_files.get_column(0)
264
213
        self.assertEqual('Commit', commit_col.get_title())
265
 
        renderer = commit_col.get_cells()[0]
 
214
        renderer = commit_col.get_cell_renderers()[0]
266
215
        self.assertTrue(renderer.get_property('activatable'))
267
216
 
268
217
        self.assertEqual('Commit all changes',
287
236
 
288
237
        commit_col = dlg._treeview_files.get_column(0)
289
238
        self.assertEqual('Commit*', commit_col.get_title())
290
 
        renderer = commit_col.get_cells()[0]
 
239
        renderer = commit_col.get_cell_renderers()[0]
291
240
        self.assertFalse(renderer.get_property('activatable'))
292
241
 
293
242
        values = [(r[0], r[1], r[2], r[3]) for r in dlg._pending_store]
339
288
 
340
289
        dlg = commit.CommitDialog(tree)
341
290
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
342
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
291
        self.assertEqual([(None, None, True, 'All Files', ''),
343
292
                          ('a-id', 'a', True, 'a', 'added'),
344
293
                          ('b-id', 'b', True, 'b/', 'added'),
345
294
                          ('c-id', 'b/c', True, 'b/c', 'added'),
356
305
 
357
306
        dlg = commit.CommitDialog(tree)
358
307
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
359
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
308
        self.assertEqual([(None, None, True, 'All Files', ''),
360
309
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
361
310
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed'),
362
311
                         ], values)
371
320
 
372
321
        dlg = commit.CommitDialog(tree)
373
322
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
374
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
323
        self.assertEqual([(None, None, True, 'All Files', ''),
375
324
                          ('a-id', 'a', True, 'a', 'modified'),
376
325
                         ], values)
377
326
 
391
340
 
392
341
        dlg = commit.CommitDialog(tree)
393
342
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
394
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
343
        self.assertEqual([(None, None, True, 'All Files', ''),
395
344
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
396
345
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed and modified'),
397
346
                          ('c-id', 'd/c', True, 'd/c', 'modified'),
414
363
 
415
364
        dlg = commit.CommitDialog(tree)
416
365
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
417
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
366
        self.assertEqual([(None, None, True, 'All Files', ''),
418
367
                          ('a-id', 'a', True, 'a => a/', 'kind changed'),
419
368
                          # ('b-id', 'c', True, 'b => c/', 'renamed and modified'),
420
369
                         ], values)
430
379
 
431
380
        dlg = commit.CommitDialog(tree)
432
381
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
433
 
        self.assertEqual([("", "", True, 'All Files', ''),
 
382
        self.assertEqual([(None, None, True, 'All Files', ''),
434
383
                          ('a-id', 'a', True, 'a', 'removed'),
435
384
                          ('b-id', 'b', True, 'b/', 'removed'),
436
385
                         ], values)
437
386
        # All Files should be selected
438
 
        self.assertEqual(
439
 
            (Gtk.TreePath(path=0), None), dlg._treeview_files.get_cursor())
 
387
        self.assertEqual(((0,), None), dlg._treeview_files.get_cursor())
440
388
 
441
389
    def test_filelist_with_selected(self):
442
390
        tree = self.make_branch_and_tree('tree')
445
393
 
446
394
        dlg = commit.CommitDialog(tree, selected='a')
447
395
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
448
 
        self.assertEqual([("", "", False, 'All Files', ''),
 
396
        self.assertEqual([(None, None, False, 'All Files', ''),
449
397
                          ('a-id', 'a', True, 'a', 'added'),
450
398
                          ('b-id', 'b', False, 'b/', 'added'),
451
399
                         ], values)
452
400
        # This file should also be selected in the file list, rather than the
453
401
        # 'All Files' selection
454
 
        self.assertEqual(
455
 
            (Gtk.TreePath(path=1), None), dlg._treeview_files.get_cursor())
 
402
        self.assertEqual(((1,), None), dlg._treeview_files.get_cursor())
456
403
 
457
404
    def test_diff_view(self):
458
405
        tree = self.make_branch_and_tree('tree')
466
413
        dlg = commit.CommitDialog(tree)
467
414
        diff_buffer = dlg._diff_view.buffer
468
415
        text = diff_buffer.get_text(diff_buffer.get_start_iter(),
469
 
                                    diff_buffer.get_end_iter(),
470
 
                                    True).splitlines(True)
 
416
                                    diff_buffer.get_end_iter()).splitlines(True)
471
417
 
472
418
        self.assertEqual("=== modified file 'a'\n", text[0])
473
419
        self.assertContainsRe(text[1],
518
464
        self.assertFalse(dlg._file_message_expander.get_expanded())
519
465
        self.assertFalse(dlg._file_message_expander.get_property('sensitive'))
520
466
 
521
 
        dlg._treeview_files.set_cursor(
522
 
            Gtk.TreePath(path=1), None, False)
 
467
        dlg._treeview_files.set_cursor((1,))
523
468
        self.assertEqual('Diff for a', dlg._diff_label.get_text())
524
469
        text = diff_buffer.get_text(diff_buffer.get_start_iter(),
525
 
                                    diff_buffer.get_end_iter(),
526
 
                                    True).splitlines(True)
 
470
                                    diff_buffer.get_end_iter()).splitlines(True)
527
471
        self.assertEqual("=== added file 'a'\n", text[0])
528
472
        self.assertContainsRe(text[1],
529
473
            r"--- a\t\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d [+-]\d\d\d\d")
537
481
        self.assertTrue(dlg._file_message_expander.get_expanded())
538
482
        self.assertTrue(dlg._file_message_expander.get_property('sensitive'))
539
483
 
540
 
        dlg._treeview_files.set_cursor(
541
 
            Gtk.TreePath(path=2), None, False)
 
484
        dlg._treeview_files.set_cursor((2,))
542
485
        self.assertEqual('Diff for b', dlg._diff_label.get_text())
543
486
        text = diff_buffer.get_text(diff_buffer.get_start_iter(),
544
 
                                    diff_buffer.get_end_iter(),
545
 
                                    True).splitlines(True)
 
487
                                    diff_buffer.get_end_iter()).splitlines(True)
546
488
        self.assertEqual("=== added file 'b'\n", text[0])
547
489
        self.assertContainsRe(text[1],
548
490
            r"--- b\t\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d [+-]\d\d\d\d")
556
498
        self.assertTrue(dlg._file_message_expander.get_expanded())
557
499
        self.assertTrue(dlg._file_message_expander.get_property('sensitive'))
558
500
 
559
 
        dlg._treeview_files.set_cursor(
560
 
            Gtk.TreePath(path=0), None, False)
 
501
        dlg._treeview_files.set_cursor((0,))
561
502
        self.assertEqual('Diff for All Files', dlg._diff_label.get_text())
562
503
        self.assertEqual('File commit message',
563
504
                         dlg._file_message_expander.get_label())
573
514
 
574
515
        def get_file_text():
575
516
            buf = dlg._file_message_text_view.get_buffer()
576
 
            return buf.get_text(
577
 
                buf.get_start_iter(), buf.get_end_iter(), True)
 
517
            return buf.get_text(buf.get_start_iter(), buf.get_end_iter())
578
518
 
579
519
        def get_saved_text(path):
580
520
            """Get the saved text for a given record."""
587
527
        self.assertFalse(dlg._file_message_expander.get_property('sensitive'))
588
528
        self.assertEqual('', get_file_text())
589
529
 
590
 
        dlg._treeview_files.set_cursor(
591
 
            Gtk.TreePath(path=1), None, False)
 
530
        dlg._treeview_files.set_cursor((1,))
592
531
        self.assertEqual('Commit message for a',
593
532
                         dlg._file_message_expander.get_label())
594
533
        self.assertTrue(dlg._file_message_expander.get_expanded())
601
540
        # We should have updated the ListStore with the new file commit info
602
541
        self.assertEqual('Some text\nfor a\n', get_saved_text(1))
603
542
 
604
 
        dlg._treeview_files.set_cursor(
605
 
            Gtk.TreePath(path=2), None, False)
 
543
        dlg._treeview_files.set_cursor((2,))
606
544
        self.assertEqual('Commit message for b/',
607
545
                         dlg._file_message_expander.get_label())
608
546
        self.assertTrue(dlg._file_message_expander.get_expanded())
613
551
        dlg._set_file_commit_message('More text\nfor b\n')
614
552
        # Now switch back to 'a'. The message should be saved, and the buffer
615
553
        # should be updated with the other text
616
 
        dlg._treeview_files.set_cursor(
617
 
            Gtk.TreePath(path=1), None, False)
 
554
        dlg._treeview_files.set_cursor((1,))
618
555
        self.assertEqual('More text\nfor b\n', get_saved_text(2))
619
556
        self.assertEqual('Commit message for a',
620
557
                         dlg._file_message_expander.get_label())
629
566
        tree.add(['a', 'b'], ['a-id', 'b-id'])
630
567
 
631
568
        dlg = commit.CommitDialog(tree)
632
 
        self.assertEqual([("", "", True),
 
569
        self.assertEqual([(None, None, True),
633
570
                          ('a-id', 'a', True),
634
571
                          ('b-id', 'b', True),
635
572
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
640
577
        #       do with. So instead, we just call toggle directly, and assume
641
578
        #       that toggle is hooked in correctly
642
579
        # column = dlg._treeview_files.get_column(0)
643
 
        # renderer = column.get_cells()[0]
 
580
        # renderer = column.get_cell_renderers()[0]
644
581
 
645
582
        # Toggle a single entry should set just that entry to False
646
583
        dlg._toggle_commit(None, 1, dlg._files_store)
647
 
        self.assertEqual([("", "", True),
 
584
        self.assertEqual([(None, None, True),
648
585
                          ('a-id', 'a', False),
649
586
                          ('b-id', 'b', True),
650
587
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
651
588
 
652
589
        # Toggling the main entry should set all entries
653
590
        dlg._toggle_commit(None, 0, dlg._files_store)
654
 
        self.assertEqual([("", "", False),
 
591
        self.assertEqual([(None, None, False),
655
592
                          ('a-id', 'a', False),
656
593
                          ('b-id', 'b', False),
657
594
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
658
595
 
659
596
        dlg._toggle_commit(None, 2, dlg._files_store)
660
 
        self.assertEqual([("", "", False),
 
597
        self.assertEqual([(None, None, False),
661
598
                          ('a-id', 'a', False),
662
599
                          ('b-id', 'b', True),
663
600
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
664
601
 
665
602
        dlg._toggle_commit(None, 0, dlg._files_store)
666
 
        self.assertEqual([("", "", True),
 
603
        self.assertEqual([(None, None, True),
667
604
                          ('a-id', 'a', True),
668
605
                          ('b-id', 'b', True),
669
606
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
693
630
        dlg._commit_selected_radio.set_active(True)
694
631
        self.assertEqual((['a_file', 'b_dir'], []), dlg._get_specific_files())
695
632
 
696
 
        dlg._treeview_files.set_cursor(
697
 
            Gtk.TreePath(path=1), None, False)
 
633
        dlg._treeview_files.set_cursor((1,))
698
634
        dlg._set_file_commit_message('Test\nmessage\nfor a_file\n')
699
 
        dlg._treeview_files.set_cursor(
700
 
            Gtk.TreePath(path=2), None, False)
 
635
        dlg._treeview_files.set_cursor((2,))
701
636
        dlg._set_file_commit_message('message\nfor b_dir\n')
702
637
 
703
638
        self.assertEqual((['a_file', 'b_dir'],
723
658
        dlg._commit_selected_radio.set_active(True)
724
659
        self.assertEqual((['a_file', 'b_dir'], []), dlg._get_specific_files())
725
660
 
726
 
        dlg._treeview_files.set_cursor(
727
 
            Gtk.TreePath(path=1), None, False)
 
661
        dlg._treeview_files.set_cursor((1,))
728
662
        dlg._set_file_commit_message('Test\r\nmessage\rfor a_file\n')
729
 
        dlg._treeview_files.set_cursor(
730
 
            Gtk.TreePath(path=2), None, False)
 
663
        dlg._treeview_files.set_cursor((2,))
731
664
        dlg._set_file_commit_message('message\r\nfor\nb_dir\r')
732
665
 
733
666
        self.assertEqual((['a_file', 'b_dir'],
746
679
        def _question_yes(*args, **kwargs):
747
680
            self.questions.append(args)
748
681
            self.questions.append('YES')
749
 
            return Gtk.ResponseType.YES
 
682
            return gtk.RESPONSE_YES
750
683
        dlg._question_dialog = _question_yes
751
684
 
752
685
    def _set_question_no(self, dlg):
755
688
        def _question_no(*args, **kwargs):
756
689
            self.questions.append(args)
757
690
            self.questions.append('NO')
758
 
            return Gtk.ResponseType.NO
 
691
            return gtk.RESPONSE_NO
759
692
        dlg._question_dialog = _question_no
760
693
 
761
694
 
1040
973
 
1041
974
        dlg = commit.CommitDialog(tree)
1042
975
        dlg._commit_selected_radio.set_active(True) # enable partial
1043
 
        dlg._treeview_files.set_cursor(
1044
 
            Gtk.TreePath(path=1), None, False)
 
976
        dlg._treeview_files.set_cursor((1,))
1045
977
        dlg._set_file_commit_message('Message for A\n')
1046
 
        dlg._treeview_files.set_cursor(
1047
 
            Gtk.TreePath(path=2), None, False)
 
978
        dlg._treeview_files.set_cursor((2,))
1048
979
        dlg._set_file_commit_message('Message for B\n')
1049
980
        dlg._toggle_commit(None, 2, dlg._files_store) # unset 'b'
1050
981
        dlg._set_global_commit_message('Commit just "a"')
1077
1008
        tree.merge_from_branch(tree2.branch)
1078
1009
 
1079
1010
        dlg = commit.CommitDialog(tree)
1080
 
        dlg._treeview_files.set_cursor(
1081
 
            Gtk.TreePath(path=1), None, False) # 'a'
 
1011
        dlg._treeview_files.set_cursor((1,)) # 'a'
1082
1012
        dlg._set_file_commit_message('Message for A\n')
1083
1013
        # No message for 'B'
1084
1014
        dlg._set_global_commit_message('Merging from "tree2"\n')
1101
1031
                         bencode.bdecode(file_info.encode('UTF-8')))
1102
1032
 
1103
1033
    def test_commit_unicode_messages(self):
1104
 
        self.requireFeature(UnicodeFilenameFeature)
 
1034
        self.requireFeature(tests.UnicodeFilenameFeature)
1105
1035
 
1106
1036
        tree = self.make_branch_and_tree('tree')
1107
1037
        tree.branch.get_config().set_user_option('per_file_commits', 'true')
1109
1039
        tree.add(['a', u'\u03a9'], ['a-id', 'omega-id'])
1110
1040
 
1111
1041
        dlg = commit.CommitDialog(tree)
1112
 
        dlg._treeview_files.set_cursor(
1113
 
            Gtk.TreePath(path=1), None, False) # 'a'
 
1042
        dlg._treeview_files.set_cursor((1,)) # 'a'
1114
1043
        dlg._set_file_commit_message(u'Test \xfan\xecc\xf6de\n')
1115
 
        dlg._treeview_files.set_cursor(
1116
 
            Gtk.TreePath(path=2), None, False) # omega
 
1044
        dlg._treeview_files.set_cursor((2,)) # omega
1117
1045
        dlg._set_file_commit_message(u'\u03a9 is the end of all things.\n')
1118
1046
        dlg._set_global_commit_message(u'\u03a9 and \xfan\xecc\xf6de\n')
1119
1047
 
1175
1103
        super(TestSavedCommitMessages, self).setUp()
1176
1104
        # Install our hook
1177
1105
        branch.Branch.hooks.install_named_hook(
1178
 
            'post_uncommit', commitmsgs.save_commit_messages, None)
 
1106
            'post_uncommit', commit.save_commit_messages, None)
1179
1107
 
1180
1108
    def _get_file_info_dict(self, rank):
1181
1109
        file_info = [dict(path='a', file_id='a-id', message='a msg %d' % rank),
1298
1226
        self.assertEquals(u'', self._get_commit_message())
1299
1227
        self.assertEquals(u'de',
1300
1228
                          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)