/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
 
26
28
    uncommit,
27
29
    )
28
30
try:
29
 
    from bzrlib import bencode
30
 
except ImportError:
31
 
    from bzrlib.util import bencode
 
31
    from bzrlib.tests.features import UnicodeFilenameFeature
 
32
except ImportError: # bzr < 2.5
 
33
    from bzrlib.tests import UnicodeFilenameFeature
 
34
from bzrlib import bencode
32
35
 
33
 
from bzrlib.plugins.gtk import commit
 
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
34
42
 
35
43
 
36
44
# TODO: All we need is basic ancestry code to test this, we shouldn't need a
42
50
        tree = self.make_branch_and_tree('.')
43
51
        tree.commit('one')
44
52
 
45
 
        self.assertIs(None, commit.pending_revisions(tree))
 
53
        self.addCleanup(tree.lock_read().unlock)
 
54
        self.assertEquals([], list(commit.pending_revisions(tree)))
46
55
 
47
56
    def test_pending_revisions_simple(self):
48
57
        tree = self.make_branch_and_tree('tree')
52
61
        tree.merge_from_branch(tree2.branch)
53
62
        self.assertEqual([rev_id1, rev_id2], tree.get_parent_ids())
54
63
 
55
 
        pending_revisions = commit.pending_revisions(tree)
 
64
        self.addCleanup(tree.lock_read().unlock)
 
65
        pending_revisions = list(commit.pending_revisions(tree))
56
66
        # One primary merge
57
67
        self.assertEqual(1, len(pending_revisions))
58
68
        # Revision == rev_id2
70
80
        tree.merge_from_branch(tree2.branch)
71
81
        self.assertEqual([rev_id1, rev_id4], tree.get_parent_ids())
72
82
 
73
 
        pending_revisions = commit.pending_revisions(tree)
 
83
        self.addCleanup(tree.lock_read().unlock)
 
84
        pending_revisions = list(commit.pending_revisions(tree))
74
85
        # One primary merge
75
86
        self.assertEqual(1, len(pending_revisions))
76
87
        # Revision == rev_id2
93
104
        tree.merge_from_branch(tree3.branch, force=True)
94
105
        self.assertEqual([rev_id1, rev_id3, rev_id5], tree.get_parent_ids())
95
106
 
96
 
        pending_revisions = commit.pending_revisions(tree)
 
107
        self.addCleanup(tree.lock_read().unlock)
 
108
        pending_revisions = list(commit.pending_revisions(tree))
97
109
        # Two primary merges
98
110
        self.assertEqual(2, len(pending_revisions))
99
111
        # Revision == rev_id2
136
148
 
137
149
class TestCommitDialogSimple(tests.TestCaseWithTransport):
138
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
 
139
171
    def test_setup_parameters_no_pending(self):
140
172
        tree = self.make_branch_and_tree('tree')
141
173
        rev_id = tree.commit('first')
142
174
 
143
175
        dlg = CommitDialogNoWidgets(tree)
144
176
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
145
 
        self.assertIs(None, dlg._pending)
 
177
        self.assertEquals([], dlg._pending)
146
178
        self.assertFalse(dlg._is_checkout)
147
179
 
148
180
    def test_setup_parameters_checkout(self):
153
185
 
154
186
        dlg = CommitDialogNoWidgets(tree2)
155
187
        self.assertEqual(rev_id, dlg._basis_tree.get_revision_id())
156
 
        self.assertIs(None, dlg._pending)
 
188
        self.assertEquals([], dlg._pending)
157
189
        self.assertTrue(dlg._is_checkout)
158
190
 
159
191
    def test_setup_parameters_pending(self):
184
216
        self.assertEqual([], delta.removed)
185
217
        self.assertEqual([(u'a', 'a-id', 'file')], delta.added)
186
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
 
187
245
 
188
246
class TestCommitDialog(tests.TestCaseWithTransport):
189
247
 
211
269
 
212
270
        commit_col = dlg._treeview_files.get_column(0)
213
271
        self.assertEqual('Commit', commit_col.get_title())
214
 
        renderer = commit_col.get_cell_renderers()[0]
 
272
        renderer = commit_col.get_cells()[0]
215
273
        self.assertTrue(renderer.get_property('activatable'))
216
274
 
217
275
        self.assertEqual('Commit all changes',
236
294
 
237
295
        commit_col = dlg._treeview_files.get_column(0)
238
296
        self.assertEqual('Commit*', commit_col.get_title())
239
 
        renderer = commit_col.get_cell_renderers()[0]
 
297
        renderer = commit_col.get_cells()[0]
240
298
        self.assertFalse(renderer.get_property('activatable'))
241
299
 
242
300
        values = [(r[0], r[1], r[2], r[3]) for r in dlg._pending_store]
288
346
 
289
347
        dlg = commit.CommitDialog(tree)
290
348
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
291
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
349
        self.assertEqual([("", "", True, 'All Files', ''),
292
350
                          ('a-id', 'a', True, 'a', 'added'),
293
351
                          ('b-id', 'b', True, 'b/', 'added'),
294
352
                          ('c-id', 'b/c', True, 'b/c', 'added'),
305
363
 
306
364
        dlg = commit.CommitDialog(tree)
307
365
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
308
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
366
        self.assertEqual([("", "", True, 'All Files', ''),
309
367
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
310
368
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed'),
311
369
                         ], values)
320
378
 
321
379
        dlg = commit.CommitDialog(tree)
322
380
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
323
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
381
        self.assertEqual([("", "", True, 'All Files', ''),
324
382
                          ('a-id', 'a', True, 'a', 'modified'),
325
383
                         ], values)
326
384
 
340
398
 
341
399
        dlg = commit.CommitDialog(tree)
342
400
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
343
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
401
        self.assertEqual([("", "", True, 'All Files', ''),
344
402
                          ('b-id', 'd', True, 'b/ => d/', 'renamed'),
345
403
                          ('a-id', 'd/a', True, 'a => d/a', 'renamed and modified'),
346
404
                          ('c-id', 'd/c', True, 'd/c', 'modified'),
363
421
 
364
422
        dlg = commit.CommitDialog(tree)
365
423
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
366
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
424
        self.assertEqual([("", "", True, 'All Files', ''),
367
425
                          ('a-id', 'a', True, 'a => a/', 'kind changed'),
368
426
                          # ('b-id', 'c', True, 'b => c/', 'renamed and modified'),
369
427
                         ], values)
379
437
 
380
438
        dlg = commit.CommitDialog(tree)
381
439
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
382
 
        self.assertEqual([(None, None, True, 'All Files', ''),
 
440
        self.assertEqual([("", "", True, 'All Files', ''),
383
441
                          ('a-id', 'a', True, 'a', 'removed'),
384
442
                          ('b-id', 'b', True, 'b/', 'removed'),
385
443
                         ], values)
386
444
        # All Files should be selected
387
 
        self.assertEqual(((0,), None), dlg._treeview_files.get_cursor())
 
445
        self.assertEqual(
 
446
            (Gtk.TreePath(path=0), None), dlg._treeview_files.get_cursor())
388
447
 
389
448
    def test_filelist_with_selected(self):
390
449
        tree = self.make_branch_and_tree('tree')
393
452
 
394
453
        dlg = commit.CommitDialog(tree, selected='a')
395
454
        values = [(r[0], r[1], r[2], r[3], r[4]) for r in dlg._files_store]
396
 
        self.assertEqual([(None, None, False, 'All Files', ''),
 
455
        self.assertEqual([("", "", False, 'All Files', ''),
397
456
                          ('a-id', 'a', True, 'a', 'added'),
398
457
                          ('b-id', 'b', False, 'b/', 'added'),
399
458
                         ], values)
400
459
        # This file should also be selected in the file list, rather than the
401
460
        # 'All Files' selection
402
 
        self.assertEqual(((1,), None), dlg._treeview_files.get_cursor())
 
461
        self.assertEqual(
 
462
            (Gtk.TreePath(path=1), None), dlg._treeview_files.get_cursor())
403
463
 
404
464
    def test_diff_view(self):
405
465
        tree = self.make_branch_and_tree('tree')
413
473
        dlg = commit.CommitDialog(tree)
414
474
        diff_buffer = dlg._diff_view.buffer
415
475
        text = diff_buffer.get_text(diff_buffer.get_start_iter(),
416
 
                                    diff_buffer.get_end_iter()).splitlines(True)
 
476
                                    diff_buffer.get_end_iter(),
 
477
                                    True).splitlines(True)
417
478
 
418
479
        self.assertEqual("=== modified file 'a'\n", text[0])
419
480
        self.assertContainsRe(text[1],
464
525
        self.assertFalse(dlg._file_message_expander.get_expanded())
465
526
        self.assertFalse(dlg._file_message_expander.get_property('sensitive'))
466
527
 
467
 
        dlg._treeview_files.set_cursor((1,))
 
528
        dlg._treeview_files.set_cursor(
 
529
            Gtk.TreePath(path=1), None, False)
468
530
        self.assertEqual('Diff for a', dlg._diff_label.get_text())
469
531
        text = diff_buffer.get_text(diff_buffer.get_start_iter(),
470
 
                                    diff_buffer.get_end_iter()).splitlines(True)
 
532
                                    diff_buffer.get_end_iter(),
 
533
                                    True).splitlines(True)
471
534
        self.assertEqual("=== added file 'a'\n", text[0])
472
535
        self.assertContainsRe(text[1],
473
536
            r"--- a\t\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d [+-]\d\d\d\d")
481
544
        self.assertTrue(dlg._file_message_expander.get_expanded())
482
545
        self.assertTrue(dlg._file_message_expander.get_property('sensitive'))
483
546
 
484
 
        dlg._treeview_files.set_cursor((2,))
 
547
        dlg._treeview_files.set_cursor(
 
548
            Gtk.TreePath(path=2), None, False)
485
549
        self.assertEqual('Diff for b', dlg._diff_label.get_text())
486
550
        text = diff_buffer.get_text(diff_buffer.get_start_iter(),
487
 
                                    diff_buffer.get_end_iter()).splitlines(True)
 
551
                                    diff_buffer.get_end_iter(),
 
552
                                    True).splitlines(True)
488
553
        self.assertEqual("=== added file 'b'\n", text[0])
489
554
        self.assertContainsRe(text[1],
490
555
            r"--- b\t\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d [+-]\d\d\d\d")
498
563
        self.assertTrue(dlg._file_message_expander.get_expanded())
499
564
        self.assertTrue(dlg._file_message_expander.get_property('sensitive'))
500
565
 
501
 
        dlg._treeview_files.set_cursor((0,))
 
566
        dlg._treeview_files.set_cursor(
 
567
            Gtk.TreePath(path=0), None, False)
502
568
        self.assertEqual('Diff for All Files', dlg._diff_label.get_text())
503
569
        self.assertEqual('File commit message',
504
570
                         dlg._file_message_expander.get_label())
514
580
 
515
581
        def get_file_text():
516
582
            buf = dlg._file_message_text_view.get_buffer()
517
 
            return buf.get_text(buf.get_start_iter(), buf.get_end_iter())
 
583
            return buf.get_text(
 
584
                buf.get_start_iter(), buf.get_end_iter(), True)
518
585
 
519
586
        def get_saved_text(path):
520
587
            """Get the saved text for a given record."""
527
594
        self.assertFalse(dlg._file_message_expander.get_property('sensitive'))
528
595
        self.assertEqual('', get_file_text())
529
596
 
530
 
        dlg._treeview_files.set_cursor((1,))
 
597
        dlg._treeview_files.set_cursor(
 
598
            Gtk.TreePath(path=1), None, False)
531
599
        self.assertEqual('Commit message for a',
532
600
                         dlg._file_message_expander.get_label())
533
601
        self.assertTrue(dlg._file_message_expander.get_expanded())
540
608
        # We should have updated the ListStore with the new file commit info
541
609
        self.assertEqual('Some text\nfor a\n', get_saved_text(1))
542
610
 
543
 
        dlg._treeview_files.set_cursor((2,))
 
611
        dlg._treeview_files.set_cursor(
 
612
            Gtk.TreePath(path=2), None, False)
544
613
        self.assertEqual('Commit message for b/',
545
614
                         dlg._file_message_expander.get_label())
546
615
        self.assertTrue(dlg._file_message_expander.get_expanded())
551
620
        dlg._set_file_commit_message('More text\nfor b\n')
552
621
        # Now switch back to 'a'. The message should be saved, and the buffer
553
622
        # should be updated with the other text
554
 
        dlg._treeview_files.set_cursor((1,))
 
623
        dlg._treeview_files.set_cursor(
 
624
            Gtk.TreePath(path=1), None, False)
555
625
        self.assertEqual('More text\nfor b\n', get_saved_text(2))
556
626
        self.assertEqual('Commit message for a',
557
627
                         dlg._file_message_expander.get_label())
566
636
        tree.add(['a', 'b'], ['a-id', 'b-id'])
567
637
 
568
638
        dlg = commit.CommitDialog(tree)
569
 
        self.assertEqual([(None, None, True),
 
639
        self.assertEqual([("", "", True),
570
640
                          ('a-id', 'a', True),
571
641
                          ('b-id', 'b', True),
572
642
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
577
647
        #       do with. So instead, we just call toggle directly, and assume
578
648
        #       that toggle is hooked in correctly
579
649
        # column = dlg._treeview_files.get_column(0)
580
 
        # renderer = column.get_cell_renderers()[0]
 
650
        # renderer = column.get_cells()[0]
581
651
 
582
652
        # Toggle a single entry should set just that entry to False
583
653
        dlg._toggle_commit(None, 1, dlg._files_store)
584
 
        self.assertEqual([(None, None, True),
 
654
        self.assertEqual([("", "", True),
585
655
                          ('a-id', 'a', False),
586
656
                          ('b-id', 'b', True),
587
657
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
588
658
 
589
659
        # Toggling the main entry should set all entries
590
660
        dlg._toggle_commit(None, 0, dlg._files_store)
591
 
        self.assertEqual([(None, None, False),
 
661
        self.assertEqual([("", "", False),
592
662
                          ('a-id', 'a', False),
593
663
                          ('b-id', 'b', False),
594
664
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
595
665
 
596
666
        dlg._toggle_commit(None, 2, dlg._files_store)
597
 
        self.assertEqual([(None, None, False),
 
667
        self.assertEqual([("", "", False),
598
668
                          ('a-id', 'a', False),
599
669
                          ('b-id', 'b', True),
600
670
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
601
671
 
602
672
        dlg._toggle_commit(None, 0, dlg._files_store)
603
 
        self.assertEqual([(None, None, True),
 
673
        self.assertEqual([("", "", True),
604
674
                          ('a-id', 'a', True),
605
675
                          ('b-id', 'b', True),
606
676
                         ], [(r[0], r[1], r[2]) for r in dlg._files_store])
630
700
        dlg._commit_selected_radio.set_active(True)
631
701
        self.assertEqual((['a_file', 'b_dir'], []), dlg._get_specific_files())
632
702
 
633
 
        dlg._treeview_files.set_cursor((1,))
 
703
        dlg._treeview_files.set_cursor(
 
704
            Gtk.TreePath(path=1), None, False)
634
705
        dlg._set_file_commit_message('Test\nmessage\nfor a_file\n')
635
 
        dlg._treeview_files.set_cursor((2,))
 
706
        dlg._treeview_files.set_cursor(
 
707
            Gtk.TreePath(path=2), None, False)
636
708
        dlg._set_file_commit_message('message\nfor b_dir\n')
637
709
 
638
710
        self.assertEqual((['a_file', 'b_dir'],
658
730
        dlg._commit_selected_radio.set_active(True)
659
731
        self.assertEqual((['a_file', 'b_dir'], []), dlg._get_specific_files())
660
732
 
661
 
        dlg._treeview_files.set_cursor((1,))
 
733
        dlg._treeview_files.set_cursor(
 
734
            Gtk.TreePath(path=1), None, False)
662
735
        dlg._set_file_commit_message('Test\r\nmessage\rfor a_file\n')
663
 
        dlg._treeview_files.set_cursor((2,))
 
736
        dlg._treeview_files.set_cursor(
 
737
            Gtk.TreePath(path=2), None, False)
664
738
        dlg._set_file_commit_message('message\r\nfor\nb_dir\r')
665
739
 
666
740
        self.assertEqual((['a_file', 'b_dir'],
973
1047
 
974
1048
        dlg = commit.CommitDialog(tree)
975
1049
        dlg._commit_selected_radio.set_active(True) # enable partial
976
 
        dlg._treeview_files.set_cursor((1,))
 
1050
        dlg._treeview_files.set_cursor(
 
1051
            Gtk.TreePath(path=1), None, False)
977
1052
        dlg._set_file_commit_message('Message for A\n')
978
 
        dlg._treeview_files.set_cursor((2,))
 
1053
        dlg._treeview_files.set_cursor(
 
1054
            Gtk.TreePath(path=2), None, False)
979
1055
        dlg._set_file_commit_message('Message for B\n')
980
1056
        dlg._toggle_commit(None, 2, dlg._files_store) # unset 'b'
981
1057
        dlg._set_global_commit_message('Commit just "a"')
1008
1084
        tree.merge_from_branch(tree2.branch)
1009
1085
 
1010
1086
        dlg = commit.CommitDialog(tree)
1011
 
        dlg._treeview_files.set_cursor((1,)) # 'a'
 
1087
        dlg._treeview_files.set_cursor(
 
1088
            Gtk.TreePath(path=1), None, False) # 'a'
1012
1089
        dlg._set_file_commit_message('Message for A\n')
1013
1090
        # No message for 'B'
1014
1091
        dlg._set_global_commit_message('Merging from "tree2"\n')
1031
1108
                         bencode.bdecode(file_info.encode('UTF-8')))
1032
1109
 
1033
1110
    def test_commit_unicode_messages(self):
1034
 
        self.requireFeature(tests.UnicodeFilenameFeature)
 
1111
        self.requireFeature(UnicodeFilenameFeature)
1035
1112
 
1036
1113
        tree = self.make_branch_and_tree('tree')
1037
1114
        tree.branch.get_config().set_user_option('per_file_commits', 'true')
1039
1116
        tree.add(['a', u'\u03a9'], ['a-id', 'omega-id'])
1040
1117
 
1041
1118
        dlg = commit.CommitDialog(tree)
1042
 
        dlg._treeview_files.set_cursor((1,)) # 'a'
 
1119
        dlg._treeview_files.set_cursor(
 
1120
            Gtk.TreePath(path=1), None, False) # 'a'
1043
1121
        dlg._set_file_commit_message(u'Test \xfan\xecc\xf6de\n')
1044
 
        dlg._treeview_files.set_cursor((2,)) # omega
 
1122
        dlg._treeview_files.set_cursor(
 
1123
            Gtk.TreePath(path=2), None, False) # omega
1045
1124
        dlg._set_file_commit_message(u'\u03a9 is the end of all things.\n')
1046
1125
        dlg._set_global_commit_message(u'\u03a9 and \xfan\xecc\xf6de\n')
1047
1126
 
1103
1182
        super(TestSavedCommitMessages, self).setUp()
1104
1183
        # Install our hook
1105
1184
        branch.Branch.hooks.install_named_hook(
1106
 
            'post_uncommit', commit.save_commit_messages, None)
 
1185
            'post_uncommit', commitmsgs.save_commit_messages, None)
1107
1186
 
1108
1187
    def _get_file_info_dict(self, rank):
1109
1188
        file_info = [dict(path='a', file_id='a-id', message='a msg %d' % rank),
1226
1305
        self.assertEquals(u'', self._get_commit_message())
1227
1306
        self.assertEquals(u'de',
1228
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)