18
18
from cStringIO import StringIO
21
from bzrlib import errors, tests
21
from gi.repository import Gtk
29
from bzrlib.tests.features import UnicodeFilenameFeature
30
except ImportError: # bzr < 2.5
31
from bzrlib.tests import UnicodeFilenameFeature
22
32
from bzrlib.merge_directive import MergeDirective2
24
34
from bzrlib.plugins.gtk.diff import (
27
39
iter_changes_to_status,
28
40
MergeDirectiveController,
42
from bzrlib.plugins.gtk.tests import MockMethod
31
46
=== modified file 'tests/test_diff.py'
32
47
--- tests/test_diff.py 2008-03-11 13:18:28 +0000
110
class FakeDiffWidget(DiffWidget):
115
class TestDiffWidget(tests.TestCaseWithTransport):
117
def test_treeview_cursor_cb(self):
118
widget = FakeDiffWidget()
119
widget.set_diff_text_sections(
120
[('', None, 'patch1'), ('a', 'a', 'patch2')])
121
widget.treeview.set_cursor(Gtk.TreePath(path=1), None, False)
122
widget._treeview_cursor_cb(None)
123
self.assertTrue('patch2', widget.diff_view.buffer.props.text)
125
def test_treeview_cursor_cb_with_destroyed_treeview(self):
126
widget = FakeDiffWidget()
127
widget.set_diff_text_sections(
128
[('', None, 'patch1'), ('a', 'a', 'patch2')])
129
MockMethod.bind(self, widget.diff_view, 'show_diff')
130
widget.treeview.destroy()
131
widget._treeview_cursor_cb(None)
132
self.assertFalse(widget.diff_view.show_diff.called)
135
class FakeDiffWindow(DiffWindow):
140
class DiffWindowTestCase(tests.TestCaseWithTransport):
143
window = DiffWindow()
144
self.assertEqual('bzr diff', window.props.title)
145
self.assertEqual(0, window.props.border_width)
147
def test_init_construct_without_operations(self):
148
window = DiffWindow()
149
widgets = window.vbox.get_children()
150
self.assertEqual(2, len(widgets))
151
self.assertIsInstance(widgets[0], Gtk.MenuBar)
152
self.assertIsInstance(widgets[1], DiffWidget)
154
def test_init_construct_with_operations(self):
155
method = MockMethod()
156
window = DiffWindow(operations=[('title', method)])
157
widgets = window.vbox.get_children()
158
self.assertEqual(3, len(widgets))
159
self.assertIsInstance(widgets[0], Gtk.MenuBar)
160
self.assertIsInstance(widgets[1], Gtk.HButtonBox)
161
self.assertIsInstance(widgets[2], DiffWidget)
163
def test_get_menu_bar(self):
164
window = DiffWindow()
165
menu_bar = window._get_menu_bar()
166
self.assertIsNot(None, menu_bar)
167
menus = menu_bar.get_children()
168
self.assertEqual(1, len(menus))
169
self.assertEqual('_View', menus[0].props.label)
170
sub_menu = menus[0].get_submenu()
171
self.assertIsNot(None, sub_menu)
172
items = sub_menu.get_children()
173
self.assertEqual(1, len(items))
174
menus[0].get_submenu().get_children()[0].props.label
175
self.assertEqual('Wrap _Long Lines', items[0].props.label)
177
def test_get_button_bar_with_none(self):
178
window = DiffWindow()
179
self.assertIs(None, window._get_button_bar(None))
181
def test_get_button_bar_with_operations(self):
182
window = DiffWindow()
183
method = MockMethod()
184
button_bar = window._get_button_bar([('title', method)])
185
self.assertIsNot(None, button_bar)
186
buttons = button_bar.get_children()
187
self.assertEqual(1, len(buttons))
188
self.assertEqual('title', buttons[0].props.label)
189
buttons[0].emit('clicked')
190
self.assertIs(True, method.called)
94
194
class MockDiffWidget(object):
96
196
def set_diff_text_sections(self, sections):
303
404
[('a-id', 'a', 'removed', 'a'),
304
405
('b-id', 'b', 'removed', 'b/'),
408
def test_status_missing_file(self):
409
this = self.make_branch_and_tree('this')
410
self.build_tree(['this/foo'])
411
this.add(['foo'], ['foo-id'])
414
other = this.bzrdir.sprout('other').open_workingtree()
416
os.remove('this/foo')
417
this.remove('foo', force=True)
418
this.commit('remove')
420
f = open('other/foo', 'wt')
422
f.write('Modified\n')
425
other.commit('modified')
427
this.merge_from_branch(other.branch)
428
conflicts.resolve(this)
430
self.assertStatusEqual(
431
[('foo-id', 'foo.OTHER', 'missing', 'foo.OTHER'),],
434
def test_status_missing_directory(self):
435
this = self.make_branch_and_tree('this')
436
self.build_tree(['this/foo/', 'this/foo/bar'])
437
this.add(['foo', 'foo/bar'], ['foo-id', 'bar-id'])
440
other = this.bzrdir.sprout('other').open_workingtree()
442
os.remove('this/foo/bar')
444
this.remove('foo', force=True)
445
this.commit('remove')
447
f = open('other/foo/bar', 'wt')
449
f.write('Modified\n')
452
other.commit('modified')
454
this.merge_from_branch(other.branch)
455
conflicts.resolve(this)
457
self.assertStatusEqual(
458
[('foo-id', u'foo', 'added', u'foo/'),
459
('bar-id', u'foo/bar.OTHER', 'missing', u'foo/bar.OTHER'),],