Merge lp:~nataliabidart/ubuntuone-control-panel/gicrazyness into lp:ubuntuone-control-panel

Proposed by Natalia Bidart
Status: Merged
Approved by: Natalia Bidart
Approved revision: 261
Merged at revision: 257
Proposed branch: lp:~nataliabidart/ubuntuone-control-panel/gicrazyness
Merge into: lp:ubuntuone-control-panel
Diff against target: 213 lines (+36/-39)
5 files modified
run-tests (+20/-15)
ubuntuone/controlpanel/gui/gtk/gui.py (+6/-4)
ubuntuone/controlpanel/gui/gtk/tests/__init__.py (+1/-10)
ubuntuone/controlpanel/gui/gtk/tests/test_gui_basic.py (+7/-8)
ubuntuone/controlpanel/logger.py (+2/-2)
To merge this branch: bzr merge lp:~nataliabidart/ubuntuone-control-panel/gicrazyness
Reviewer Review Type Date Requested Status
dobey (community) Approve
Review via email: mp+91708@code.launchpad.net

Commit message

- Avoid TypeError when fetching credentials in the Gtk OverviewPanel
   (LP: #927743).
- Run the whole test suite with a single command (LP: #927770).
- Do proper cleanup when dealing with UIs (LP: #925617).

To post a comment you must log in.
Revision history for this message
dobey (dobey) :
review: Approve
Revision history for this message
Ubuntu One Auto Pilot (otto-pilot) wrote :

The attempt to merge lp:~nataliabidart/ubuntuone-control-panel/gicrazyness into lp:ubuntuone-control-panel failed. Below is the output from the failed tests.

*** Running test suite for ubuntuone/controlpanel ***
The Python package providing the requested reactor is not installed. You can find it here: http://twistedmatrix.com/trac/ticket/4558

Traceback (most recent call last):
  File "/usr/bin/u1trial", line 325, in <module>
    main()
  File "/usr/bin/u1trial", line 298, in main
    reactor.install(options=config)
  File "/usr/lib/python2.7/dist-packages/ubuntuone-dev-tools/ubuntuone/devtools/reactors/gi.py", line 27, in install
    glibreactor = __import__(reactor_name, None, None, [''])
ImportError: No module named gireactor

Revision history for this message
Ubuntu One Auto Pilot (otto-pilot) wrote :

The attempt to merge lp:~nataliabidart/ubuntuone-control-panel/gicrazyness into lp:ubuntuone-control-panel failed. Below is the output from the failed tests.

*** Running test suite for ubuntuone/controlpanel ***

Traceback (most recent call last):
  File "/usr/bin/u1trial", line 325, in <module>
    main()
  File "/usr/bin/u1trial", line 305, in main
    suite = trial_runner.get_suite(config)
  File "/usr/bin/u1trial", line 184, in get_suite
    config['ignore-paths']))
  File "/usr/bin/u1trial", line 168, in _collect_tests
    module_suite = self._load_unittest(filepath)
  File "/usr/bin/u1trial", line 108, in _load_unittest
    module = __import__(modpath, None, None, [""])
  File "/home/tarmac/cache/ubuntuone-control-panel/trunk/ubuntuone/controlpanel/tests/__init__.py", line 28, in <module>
    from ubuntuone.controlpanel.backend import (
  File "/home/tarmac/cache/ubuntuone-control-panel/trunk/ubuntuone/controlpanel/backend.py", line 31, in <module>
    from ubuntuone.platform import is_link
  File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/platform/__init__.py", line 31, in <module>
    from ubuntuone.platform import linux
  File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/platform/linux/__init__.py", line 24, in <module>
    from ubuntuone.platform.linux.os_helper import (
  File "/usr/lib/python2.7/dist-packages/ubuntuone-client/ubuntuone/platform/linux/os_helper.py", line 33, in <module>
    import gio
ImportError: No module named gio

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'run-tests'
--- run-tests 2012-01-18 17:40:33 +0000
+++ run-tests 2012-02-06 21:07:20 +0000
@@ -18,17 +18,11 @@
1818
19QT_TESTS_PATH=ubuntuone/controlpanel/gui/qt/tests19QT_TESTS_PATH=ubuntuone/controlpanel/gui/qt/tests
20GTK_TESTS_PATH=ubuntuone/controlpanel/gui/gtk/tests20GTK_TESTS_PATH=ubuntuone/controlpanel/gui/gtk/tests
21DBUS_TESTS_PATH=ubuntuone/controlpanel/dbustests
21WINDOWS_TESTS=test_windows.py22WINDOWS_TESTS=test_windows.py
2223
23set -e24set -e
2425
25if [ "$1" == "-qt" ]; then
26 USE_QT=1
27 shift
28else
29 USE_QT=0
30fi
31
32if [ $# -ne 0 ]; then26if [ $# -ne 0 ]; then
33 # run specific module given by the caller27 # run specific module given by the caller
34 MODULE="$@"28 MODULE="$@"
@@ -45,16 +39,27 @@
45 echo "Please install the 'pep8' package."39 echo "Please install the 'pep8' package."
46 fi40 fi
47}41}
48
49unset GTK_MODULES42unset GTK_MODULES
5043
44XVFB_CMDLINE=""
45XVFB=$(which xvfb-run)
46if [ $XVFB ]; then
47 XVFB_CMDLINE="$XVFB -a"
48fi
49
50echo "*** Running test suite for ""$MODULE"" ***"
51u1trial --reactor=gi -p "$DBUS_TESTS_PATH, $QT_TESTS_PATH, $GTK_TESTS_PATH" -i "$WINDOWS_TESTS" "$MODULE"
52
53echo "*** Running DBus test suite ***"
54u1trial --reactor=glib "$DBUS_TESTS_PATH"
55
56echo "*** Running GTK test suite ***"
57$XVFB_CMDLINE u1trial --reactor=glib "$GTK_TESTS_PATH"
58
59echo "*** Running QT test suite for ""$MODULE"" ***"
51./setup.py build60./setup.py build
52echo "Running test suite for ""$MODULE"61$XVFB_CMDLINE u1trial -p "$GTK_TESTS_PATH" -i "$WINDOWS_TESTS" --reactor=qt4 --gui "$MODULE"
53if [ "$USE_QT" -eq 0 ]; then
54 `which xvfb-run` u1trial --ignore-paths "$QT_TESTS_PATH" -i "$WINDOWS_TESTS" "$MODULE"
55else
56 `which xvfb-run` u1trial --ignore-paths "$GTK_TESTS_PATH" -i "$WINDOWS_TESTS" --reactor=qt4 --gui "$MODULE"
57fi
58style_check
59rm -rf _trial_temp62rm -rf _trial_temp
60rm -rf build63rm -rf build
64
65style_check
6166
=== modified file 'ubuntuone/controlpanel/gui/gtk/gui.py'
--- ubuntuone/controlpanel/gui/gtk/gui.py 2012-01-23 20:15:09 +0000
+++ ubuntuone/controlpanel/gui/gtk/gui.py 2012-02-06 21:07:20 +0000
@@ -178,6 +178,9 @@
178 label.set_markup(WARNING_MARKUP % message)178 label.set_markup(WARNING_MARKUP % message)
179 label.show()179 label.show()
180180
181 def destroy(self):
182 """Cleanup."""
183
181184
182class UbuntuOneBin(gtk.VBox):185class UbuntuOneBin(gtk.VBox):
183 """A Ubuntu One bin."""186 """A Ubuntu One bin."""
@@ -248,7 +251,7 @@
248251
249 __gsignals__ = {252 __gsignals__ = {
250 'credentials-found': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,253 'credentials-found': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
251 (gobject.TYPE_BOOLEAN, gobject.TYPE_PYOBJECT)),254 (gobject.TYPE_BOOLEAN,)),
252 }255 }
253256
254 def __init__(self, main_window):257 def __init__(self, main_window):
@@ -345,7 +348,7 @@
345 def on_credentials_found(self, credentials):348 def on_credentials_found(self, credentials):
346 """Credentials backend notifies of credentials found."""349 """Credentials backend notifies of credentials found."""
347 self.set_property('greyed', False)350 self.set_property('greyed', False)
348 self.emit('credentials-found', self._credentials_are_new, credentials)351 self.emit('credentials-found', self._credentials_are_new)
349352
350 @log_call(logger.info)353 @log_call(logger.info)
351 def on_credentials_not_found(self):354 def on_credentials_not_found(self):
@@ -1568,8 +1571,7 @@
1568 """Show the overview panel."""1571 """Show the overview panel."""
1569 self.set_current_page(0)1572 self.set_current_page(0)
15701573
1571 def on_show_management_panel(self, widget=None,1574 def on_show_management_panel(self, widget=None, credentials_are_new=False):
1572 credentials_are_new=False, token=None):
1573 """Show the notebook (main panel)."""1575 """Show the notebook (main panel)."""
1574 if self.get_current_page() == 0:1576 if self.get_current_page() == 0:
1575 self.management.load()1577 self.management.load()
15761578
=== modified file 'ubuntuone/controlpanel/gui/gtk/tests/__init__.py'
--- ubuntuone/controlpanel/gui/gtk/tests/__init__.py 2011-10-24 21:48:27 +0000
+++ ubuntuone/controlpanel/gui/gtk/tests/__init__.py 2012-02-06 21:07:20 +0000
@@ -202,21 +202,12 @@
202202
203 if self.klass is not None:203 if self.klass is not None:
204 self.ui = self.klass(**self.kwargs)204 self.ui = self.klass(**self.kwargs)
205 self.addCleanup(self.ui.destroy)
205206
206 self.memento = MementoHandler()207 self.memento = MementoHandler()
207 self.memento.setLevel(logging.DEBUG)208 self.memento.setLevel(logging.DEBUG)
208 gui.logger.addHandler(self.memento)209 gui.logger.addHandler(self.memento)
209210
210 @defer.inlineCallbacks
211 def tearDown(self):
212 try:
213 self.ui.hide()
214 del self.ui
215 self.ui = None
216 except AttributeError:
217 pass
218 yield super(BaseTestCase, self).tearDown()
219
220 def assert_image_equal(self, image, filename):211 def assert_image_equal(self, image, filename):
221 """Check that expected and actual represent the same image."""212 """Check that expected and actual represent the same image."""
222 pb = gui.gtk.gdk.pixbuf_new_from_file(gui.get_data_file(filename))213 pb = gui.gtk.gdk.pixbuf_new_from_file(gui.get_data_file(filename))
223214
=== modified file 'ubuntuone/controlpanel/gui/gtk/tests/test_gui_basic.py'
--- ubuntuone/controlpanel/gui/gtk/tests/test_gui_basic.py 2011-11-21 13:32:44 +0000
+++ ubuntuone/controlpanel/gui/gtk/tests/test_gui_basic.py 2012-02-06 21:07:20 +0000
@@ -278,7 +278,7 @@
278278
279 """279 """
280 self.patch(self.ui.management, 'load', self._set_called)280 self.patch(self.ui.management, 'load', self._set_called)
281 self.ui.overview.emit('credentials-found', False, object())281 self.ui.overview.emit('credentials-found', False)
282282
283 self.assert_current_tab_correct(self.ui.management)283 self.assert_current_tab_correct(self.ui.management)
284 self.assertEqual(self.ui.management.notebook.get_current_page(),284 self.assertEqual(self.ui.management.notebook.get_current_page(),
@@ -291,8 +291,7 @@
291 If first signal parameter is True, visible tab should be services.291 If first signal parameter is True, visible tab should be services.
292292
293 """293 """
294 a_token = object()294 self.ui.overview.emit('credentials-found', True)
295 self.ui.overview.emit('credentials-found', True, a_token)
296295
297 self.assert_current_tab_correct(self.ui.management)296 self.assert_current_tab_correct(self.ui.management)
298 self.assertEqual(self.ui.management.notebook.get_current_page(),297 self.assertEqual(self.ui.management.notebook.get_current_page(),
@@ -301,19 +300,19 @@
301 def test_credentials_found_connects_syncdaemon(self):300 def test_credentials_found_connects_syncdaemon(self):
302 """On 'credentials-found' signal, ask syncdaemon to connect."""301 """On 'credentials-found' signal, ask syncdaemon to connect."""
303 # credentials are new302 # credentials are new
304 self.ui.overview.emit('credentials-found', True, object())303 self.ui.overview.emit('credentials-found', True)
305 self.assert_backend_called('connect_files')304 self.assert_backend_called('connect_files')
306305
307 def test_local_device_removed_shows_overview_panel(self):306 def test_local_device_removed_shows_overview_panel(self):
308 """On 'local-device-removed' signal, the overview panel is shown."""307 """On 'local-device-removed' signal, the overview panel is shown."""
309 self.ui.overview.emit('credentials-found', True, object())308 self.ui.overview.emit('credentials-found', True)
310 self.ui.management.emit('local-device-removed')309 self.ui.management.emit('local-device-removed')
311310
312 self.assert_current_tab_correct(self.ui.overview)311 self.assert_current_tab_correct(self.ui.overview)
313312
314 def test_unauthorized_shows_overview_panel(self):313 def test_unauthorized_shows_overview_panel(self):
315 """On 'unauthorized' signal, the overview panel is shown."""314 """On 'unauthorized' signal, the overview panel is shown."""
316 self.ui.overview.emit('credentials-found', True, object())315 self.ui.overview.emit('credentials-found', True)
317 self.ui.management.emit('unauthorized')316 self.ui.management.emit('unauthorized')
318317
319 self.assert_current_tab_correct(self.ui.overview)318 self.assert_current_tab_correct(self.ui.overview)
@@ -628,7 +627,7 @@
628627
629 self.assertFalse(self.ui.get_property('greyed'), 'Must not be greyed.')628 self.assertFalse(self.ui.get_property('greyed'), 'Must not be greyed.')
630 # assume credentials were in local keyring629 # assume credentials were in local keyring
631 self.assertEqual(self._called, ((self.ui, False, TOKEN), {}))630 self.assertEqual(self._called, ((self.ui, False), {}))
632631
633 def test_on_credentials_found_when_creds_are_not_new(self):632 def test_on_credentials_found_when_creds_are_not_new(self):
634 """Callback 'on_credentials_found' distinguish if creds are new."""633 """Callback 'on_credentials_found' distinguish if creds are new."""
@@ -641,7 +640,7 @@
641640
642 self.assertFalse(self.ui.get_property('greyed'), 'Must not be greyed.')641 self.assertFalse(self.ui.get_property('greyed'), 'Must not be greyed.')
643 # assume credentials were not in local keyring642 # assume credentials were not in local keyring
644 self.assertEqual(self._called, ((self.ui, True, TOKEN), {}))643 self.assertEqual(self._called, ((self.ui, True), {}))
645644
646 def test_on_credentials_not_found(self):645 def test_on_credentials_not_found(self):
647 """Callback 'on_credentials_not_found' is correct."""646 """Callback 'on_credentials_not_found' is correct."""
648647
=== modified file 'ubuntuone/controlpanel/logger.py'
--- ubuntuone/controlpanel/logger.py 2011-08-30 16:10:36 +0000
+++ ubuntuone/controlpanel/logger.py 2012-02-06 21:07:20 +0000
@@ -34,7 +34,7 @@
34 LOG_LEVEL = logging.DEBUG34 LOG_LEVEL = logging.DEBUG
35else:35else:
36 # Only log this level and above36 # Only log this level and above
37 LOG_LEVEL = logging.DEBUG # before final release, switch to INFO37 LOG_LEVEL = logging.INFO
3838
39FILE_NAME = os.path.join(ubuntuone_log_dir, 'controlpanel.log')39FILE_NAME = os.path.join(ubuntuone_log_dir, 'controlpanel.log')
40MAIN_HANDLER = RotatingFileHandler(FILE_NAME,40MAIN_HANDLER = RotatingFileHandler(FILE_NAME,
@@ -53,7 +53,7 @@
53 logger = logging.getLogger('ubuntuone.controlpanel.%s' % log_domain)53 logger = logging.getLogger('ubuntuone.controlpanel.%s' % log_domain)
54 logger.setLevel(LOG_LEVEL)54 logger.setLevel(LOG_LEVEL)
55 logger.addHandler(MAIN_HANDLER)55 logger.addHandler(MAIN_HANDLER)
56 if os.environ.get('DEBUG'):56 if os.environ.get('U1_DEBUG'):
57 debug_handler = logging.StreamHandler(sys.stderr)57 debug_handler = logging.StreamHandler(sys.stderr)
58 debug_handler.setFormatter(basic_formatter)58 debug_handler.setFormatter(basic_formatter)
59 logger.addHandler(debug_handler)59 logger.addHandler(debug_handler)

Subscribers

People subscribed via source and target branches