/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_push.py

  • Committer: Vincent Ladeuil
  • Date: 2008-05-05 18:16:46 UTC
  • mto: (487.1.1 gtk)
  • mto: This revision was merged to the branch mainline in revision 490.
  • Revision ID: v.ladeuil+lp@free.fr-20080505181646-n95l8ltw2u6jtr26
Fix bug #187283 fix replacing _() by _i18n().

* genpot.sh 
Remove duplication. Add the ability to specify the genrated pot
file on command-line for debugging purposes.

* po/olive-gtk.pot:
Regenerated.

* __init__.py, branch.py, branchview/treeview.py, checkout.py,
commit.py, conflicts.py, diff.py, errors.py, initialize.py,
merge.py, nautilus-bzr.py, olive/__init__.py, olive/add.py,
olive/bookmark.py, olive/guifiles.py, olive/info.py,
olive/menu.py, olive/mkdir.py, olive/move.py, olive/remove.py,
olive/rename.py, push.py, revbrowser.py, status.py, tags.py:
Replace all calls to _() by calls to _i18n(), the latter being
defined in __init__.py and imported in the other modules from
there. This fix the problem encountered countless times when
running bzr selftest and getting silly error messages about
boolean not being callables.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2012 Curtis Hovey <sinzui.is@verizon.net>
2
 
#
3
 
# This program is free software; you can redistribute it and/or modify
4
 
# it under the terms of the GNU General Public License as published by
5
 
# the Free Software Foundation; either version 2 of the License, or
6
 
# (at your option) any later version.
7
 
#
8
 
# This program is distributed in the hope that it will be useful,
9
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 
# GNU General Public License for more details.
12
 
#
13
 
# You should have received a copy of the GNU General Public License
14
 
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
 
 
17
 
"""Test the ui functionality."""
18
 
 
19
 
from gi.repository import Gtk
20
 
 
21
 
from bzrlib import (
22
 
    errors,
23
 
    tests,
24
 
    ui,
25
 
    )
26
 
 
27
 
from bzrlib.plugins.gtk import (
28
 
    push,
29
 
    set_ui_factory,
30
 
    )
31
 
from bzrlib.plugins.gtk.tests import MockMethod
32
 
from bzrlib.plugins.gtk.history import UrlHistory
33
 
from bzrlib.plugins.gtk.ui import ProgressPanel
34
 
 
35
 
 
36
 
class PushTestCase(tests.TestCaseWithMemoryTransport):
37
 
 
38
 
    def make_push_branch(self):
39
 
        tree = self.make_branch_and_memory_tree('test')
40
 
        return tree.branch
41
 
 
42
 
    def test_init(self):
43
 
        set_ui_factory()
44
 
        branch = self.make_push_branch()
45
 
        dialog = push.PushDialog(
46
 
            repository=None, revid=None, branch=branch, parent=None)
47
 
        self.assertIs(None, dialog.props.parent)
48
 
        self.assertIs(branch.repository, dialog.repository)
49
 
        self.assertIs(branch.last_revision(), dialog.revid)
50
 
        self.assertIs(branch, dialog.branch)
51
 
        # Layout rules to match HIG.
52
 
        self.assertIsInstance(dialog._label_location, Gtk.Label)
53
 
        self.assertIsInstance(dialog._combo, Gtk.ComboBox)
54
 
        self.assertIsInstance(dialog._button_push, Gtk.Button)
55
 
        self.assertIsInstance(dialog._hbox_location, Gtk.Box)
56
 
        self.assertIsInstance(dialog._progress_widget, ProgressPanel)
57
 
        self.assertIsInstance(dialog._push_message, Gtk.Label)
58
 
        self.assertIsInstance(dialog._history, UrlHistory)
59
 
        self.assertIs(
60
 
            ui.ui_factory._progress_bar_widget, dialog._progress_widget)
61
 
        self.assertEqual(
62
 
            Gtk.Orientation.HORIZONTAL,
63
 
            dialog._hbox_location.props.orientation)
64
 
        self.assertEqual(0.0, dialog._push_message.props.xalign)
65
 
        self.assertEqual(6, dialog.props.border_width)
66
 
        self.assertEqual(6, dialog._hbox_location.props.spacing)
67
 
        self.assertEqual(6, dialog.get_content_area().props.spacing)
68
 
        # Show rules.
69
 
        self.assertIs(True, dialog._combo.props.visible)
70
 
        self.assertIs(False, dialog._progress_widget.props.visible)
71
 
        self.assertIs(False, dialog._push_message.props.visible)
72
 
 
73
 
    def test_build_history(self):
74
 
        set_ui_factory()
75
 
        branch = self.make_push_branch()
76
 
        branch.set_push_location('lp:~user/fnord/trunk')
77
 
        dialog = push.PushDialog(None, None, branch)
78
 
        dialog._history.add_entry('lp:~user/fnord/test1')
79
 
        dialog._history.add_entry('lp:~user/fnord/test2')
80
 
        dialog._build_history()
81
 
        self.assertEqual(
82
 
            'lp:~user/fnord/trunk', dialog._combo.get_child().props.text)
83
 
        self.assertIsInstance(dialog._combo_model, Gtk.ListStore)
84
 
        self.assertIs(dialog._combo.get_model(), dialog._combo_model)
85
 
        locations = [row[0] for row in dialog._combo_model]
86
 
        self.assertEqual(
87
 
            ['lp:~user/fnord/test1', 'lp:~user/fnord/test2'], locations)
88
 
 
89
 
    def test_on_close_clicked(self):
90
 
        # The ui_factory's progress bar widget is set to None.
91
 
        set_ui_factory()
92
 
        branch = self.make_push_branch()
93
 
        dialog = push.PushDialog(None, None, branch)
94
 
        dialog._on_close_clicked(None)
95
 
        self.assertIs(None, ui.ui_factory._progress_bar_widget)
96
 
 
97
 
    def test_on_push_clicked_without_errors(self):
98
 
        # Verify the dialog's and branch's final states after a push.
99
 
        MockMethod.bind(self, push, 'do_push', "test success")
100
 
        set_ui_factory()
101
 
        branch = self.make_push_branch()
102
 
        dialog = push.PushDialog(None, None, branch)
103
 
        MockMethod.bind(self, dialog._progress_widget, 'tick')
104
 
        dialog._combo.get_child().props.text = 'lp:~user/fnord/test'
105
 
        dialog._on_push_clicked(None)
106
 
        self.assertIs(True, dialog._progress_widget.tick.called)
107
 
        self.assertIs(False, dialog._progress_widget.props.visible)
108
 
        self.assertIs(True, push.do_push.called)
109
 
        self.assertEqual(
110
 
            (branch, 'lp:~user/fnord/test'), push.do_push.args)
111
 
        self.assertEqual(
112
 
            {'overwrite': False}, push.do_push.kwargs)
113
 
        self.assertIs(True, dialog._push_message.props.visible)
114
 
        self.assertEqual('test success', dialog._push_message.props.label)
115
 
        self.assertEqual(
116
 
            'lp:~user/fnord/test', dialog._history.get_entries()[-1])
117
 
        self.assertEqual('lp:~user/fnord/test', branch.get_push_location())
118
 
 
119
 
    def test_on_push_clicked_with_divered_branches(self):
120
 
        # Verify that when DivergedBranches is raise, the user can choose
121
 
        # to overwrite the branch.
122
 
        error = errors.DivergedBranches(None, None)
123
 
        MockMethod.bind(self, push, 'do_push', raise_error=error)
124
 
        MockMethod.bind(self, push, 'question_dialog', Gtk.ResponseType.YES)
125
 
        set_ui_factory()
126
 
        branch = self.make_push_branch()
127
 
        dialog = push.PushDialog(None, None, branch)
128
 
        dialog._combo.get_child().props.text = 'lp:~user/fnord/test'
129
 
        dialog._on_push_clicked(None)
130
 
        self.assertIs(True, push.do_push.called)
131
 
        self.assertEqual(2, push.do_push.call_count)
132
 
        self.assertEqual(
133
 
            (branch, 'lp:~user/fnord/test'), push.do_push.args)
134
 
        self.assertEqual(
135
 
            {'overwrite': True}, push.do_push.kwargs)
136
 
 
137
 
 
138
 
class DoPushTestCase(tests.TestCaseWithTransport):
139
 
 
140
 
    def setup_ui(self):
141
 
        set_ui_factory()
142
 
        progress_panel = ProgressPanel()
143
 
        ui.ui_factory.set_progress_bar_widget(progress_panel)
144
 
        MockMethod.bind(self, progress_panel.pb, 'tick')
145
 
        MockMethod.bind(self, progress_panel.pb, 'update')
146
 
        MockMethod.bind(self, progress_panel.pb, 'finished')
147
 
        return progress_panel
148
 
 
149
 
    def make_from_branch(self):
150
 
        from_tree = self.make_branch_and_tree('this')
151
 
        self.build_tree(['this/a', 'this/b'])
152
 
        from_tree.add(['a', 'b'])
153
 
        from_tree.commit("msg")
154
 
        return from_tree.branch
155
 
 
156
 
    def test_do_push_without_dir(self):
157
 
        progress_panel = self.setup_ui()
158
 
        from_branch = self.make_from_branch()
159
 
        message = push.do_push(from_branch, 'that', False)
160
 
        self.assertEqual('1 revision(s) pushed.', message)
161
 
        self.assertEqual(True, progress_panel.pb.update.called)
162
 
        self.assertEqual(True, progress_panel.pb.finished.called)
163
 
 
164
 
    def test_do_push_without_parent_dir(self):
165
 
        progress_panel = self.setup_ui()
166
 
        from_branch = self.make_from_branch()
167
 
        MockMethod.bind(self, push, 'question_dialog', Gtk.ResponseType.OK)
168
 
        message = push.do_push(from_branch, 'that/there', False)
169
 
        self.assertEqual('1 revision(s) pushed.', message)
170
 
        self.assertEqual(True, push.question_dialog.called)
171
 
        self.assertEqual(True, progress_panel.pb.update.called)
172
 
        self.assertEqual(True, progress_panel.pb.finished.called)
173
 
 
174
 
    def test_do_push_without_parent_dir_aborted(self):
175
 
        self.setup_ui()
176
 
        from_branch = self.make_from_branch()
177
 
        MockMethod.bind(self, push, 'question_dialog', Gtk.ResponseType.CANCEL)
178
 
        message = push.do_push(from_branch, 'that/there', False)
179
 
        self.assertEqual('Push aborted.', message)
180
 
 
181
 
    def test_do_push_with_dir(self):
182
 
        progress_panel = self.setup_ui()
183
 
        self.make_branch_and_tree('that')
184
 
        from_branch = self.make_from_branch()
185
 
        message = push.do_push(from_branch, 'that', False)
186
 
        self.assertEqual('1 revision(s) pushed.', message)
187
 
        self.assertEqual(True, progress_panel.pb.update.called)
188
 
        self.assertEqual(True, progress_panel.pb.finished.called)
189
 
 
190
 
    def test_create_push_result_unstacked(self):
191
 
        from_branch = object()
192
 
        to_branch = self.make_branch_and_tree('that').branch
193
 
        push_result = push.create_push_result(from_branch, to_branch)
194
 
        self.assertIs(from_branch, push_result.source_branch)
195
 
        self.assertIs(to_branch, push_result.target_branch)
196
 
        self.assertIs(None, push_result.branch_push_result)
197
 
        self.assertIs(None, push_result.master_branch)
198
 
        self.assertEqual(0, push_result.old_revno)
199
 
        self.assertEqual(to_branch.last_revision(), push_result.old_revid)
200
 
        self.assertIs(None, push_result.workingtree_updated)
201
 
        self.assertIs(None, push_result.stacked_on)
202
 
 
203
 
    def test_create_push_result_stacked(self):
204
 
        from_branch = object()
205
 
        to_branch = self.make_branch_and_tree('that').branch
206
 
        MockMethod.bind(self, to_branch, 'get_stacked_on_url', 'lp:project')
207
 
        push_result = push.create_push_result(from_branch, to_branch)
208
 
        self.assertEqual('lp:project', push_result.stacked_on)
209
 
 
210
 
    def test_create_push_message_stacked_on(self):
211
 
        from_branch = object()
212
 
        to_branch = self.make_branch_and_tree('that').branch
213
 
        MockMethod.bind(self, to_branch, 'get_stacked_on_url', 'lp:project')
214
 
        push_result = push.create_push_result(from_branch, to_branch)
215
 
        from_branch = self.make_from_branch()
216
 
        message = push.create_push_message(from_branch, push_result)
217
 
        self.assertEqual(
218
 
            '1 revision(s) pushed.\nStacked on lp:project.', message)
219
 
 
220
 
    def test_create_push_message_workingtree_updated_false(self):
221
 
        from_branch = object()
222
 
        to_branch = self.make_branch_and_tree('that').branch
223
 
        push_result = push.create_push_result(from_branch, to_branch)
224
 
        push_result.workingtree_updated = False
225
 
        from_branch = self.make_from_branch()
226
 
        message = push.create_push_message(from_branch, push_result)
227
 
        self.assertEqual(
228
 
            "1 revision(s) pushed.\n\nThe working tree was not updated:\n"
229
 
            "See 'bzr help working-trees' for more information.",
230
 
            message)