[gnome-settings-daemon] power: restore the ability of running the test suite



commit 0eb96d7a20607e66450cde3d7864393f06cb9e34
Author: Giovanni Campagna <gcampagna src gnome org>
Date:   Sun Aug 18 22:57:30 2013 +0200

    power: restore the ability of running the test suite
    
    We need to provide a mock mutter in the test environment.
    Also, we need to make sure a few objects exist right away, as
    the mock environment starts dbus calls before we're really
    initialized.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=705507

 plugins/power/gsd-power-manager.c |    9 ++++---
 plugins/power/test.py             |    2 +
 tests/gsdtestcase.py              |   41 +++++++++++++++++++++++++++++++++++++
 3 files changed, 48 insertions(+), 4 deletions(-)
---
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index c39b319..d162eba 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -3263,14 +3263,10 @@ on_rr_screen_acquired (GObject      *object,
         manager->priv->kbd_brightness_old = -1;
         manager->priv->kbd_brightness_pre_dim = -1;
         manager->priv->pre_dim_brightness = -1;
-        manager->priv->settings = g_settings_new (GSD_POWER_SETTINGS_SCHEMA);
         g_signal_connect (manager->priv->settings, "changed",
                           G_CALLBACK (engine_settings_key_changed_cb), manager);
-        manager->priv->settings_screensaver = g_settings_new ("org.gnome.desktop.screensaver");
-        manager->priv->settings_bus = g_settings_new ("org.gnome.desktop.session");
         g_signal_connect (manager->priv->settings_bus, "changed",
                           G_CALLBACK (engine_settings_key_changed_cb), manager);
-        manager->priv->settings_xrandr = g_settings_new (GSD_XRANDR_SETTINGS_SCHEMA);
         g_signal_connect (manager->priv->up_client, "device-added",
                           G_CALLBACK (engine_device_added_cb), manager);
         g_signal_connect (manager->priv->up_client, "device-removed",
@@ -3389,6 +3385,11 @@ gsd_power_manager_start (GsdPowerManager *manager,
         gnome_rr_screen_new_async (gdk_screen_get_default (),
                                    on_rr_screen_acquired, manager);
 
+        manager->priv->settings = g_settings_new (GSD_POWER_SETTINGS_SCHEMA);
+        manager->priv->settings_screensaver = g_settings_new ("org.gnome.desktop.screensaver");
+        manager->priv->settings_bus = g_settings_new ("org.gnome.desktop.session");
+        manager->priv->settings_xrandr = g_settings_new (GSD_XRANDR_SETTINGS_SCHEMA);
+
         gnome_settings_profile_end (NULL);
         return TRUE;
 }
diff --git a/plugins/power/test.py b/plugins/power/test.py
index b267e7a..98d9fbe 100755
--- a/plugins/power/test.py
+++ b/plugins/power/test.py
@@ -66,6 +66,7 @@ class PowerPluginTest(gsdtestcase.GSDTestCase):
         gsdtestcase.set_nonblock(self.screensaver.stdout)
 
         self.start_logind()
+        self.start_mutter()
 
         # Set up the gnome-session presence
         obj_session_presence = self.session_bus_con.get_object(
@@ -133,6 +134,7 @@ class PowerPluginTest(gsdtestcase.GSDTestCase):
         self.screensaver.terminate()
         self.screensaver.wait()
         self.stop_session()
+        self.stop_mutter()
         self.stop_logind()
 
         # reset all changed gsettings, so that tests are independent from each
diff --git a/tests/gsdtestcase.py b/tests/gsdtestcase.py
index 2f8d1de..c2ec295 100644
--- a/tests/gsdtestcase.py
+++ b/tests/gsdtestcase.py
@@ -185,6 +185,47 @@ class GSDTestCase(dbusmock.DBusTestCase):
         self.logind.terminate()
         self.logind.wait()
 
+    def start_mutter(self):
+        ''' start mock mutter DisplayConfig '''
+        self.mutter = self.spawn_server('org.gnome.Mutter.DisplayConfig',
+                                        '/org/gnome/Mutter/DisplayConfig',
+                                        'org.gnome.Mutter.DisplayConfig',
+                                        stdout=subprocess.PIPE)
+        self.obj_mutter = self.session_bus_con.get_object(
+            'org.gnome.Mutter.DisplayConfig', '/org/gnome/Mutter/DisplayConfig')
+
+        self.obj_mutter.AddMethods('',
+            [
+                ('GetResources', '', 'ua(uxiiiiiuaua{sv})a(uxiausauaua{sv})a(uxuud)ii', '''
+ret = (1, [(0, 1, 0, 0, 1024, 768, 0, 0, [0, 1, 2, 3, 4, 5, 6, 7], {}),
+           (1, 2, 0, 0, 0, 0, -1, 0, [], {})],
+          [(0, 3, 0, [0, 1], 'LVDS1', [0, 1], [], {'vendor': 'FOO',
+                                                   'product': '0x0000',
+                                                   'serial': '0x0000000',
+                                                   'display-name': 'Built-in Display',
+                                                   'backlight': -1,
+                                                   'primary': True })],
+          [(0, 5, 1024, 768, 60), (1, 6, 800, 600, 60)], 8192, 8192)'''),
+                ('ApplyConfiguration', 'uba(uiiiuaua{sv})a(ua{sv})', '', ''),
+                ('ChangeBacklight', 'uui', '', ''),
+                ('GetCrtcGamma', 'uu', 'aqaqaq', 'ret = ([],[],[])'),
+                ('SetCrtcGamma', 'uuaqaqaq', '', ''),
+            ], dbus_interface='org.freedesktop.DBus.Mock')
+
+        self.obj_mutter.AddProperties('',
+                                      {
+                                          'PowerSaveMode': 0,
+                                      })
+
+        # set log to nonblocking
+        set_nonblock(self.mutter.stdout)
+
+    def stop_mutter(self):
+        '''stop mock mutter'''
+
+        self.mutter.terminate()
+        self.mutter.wait()
+
     @classmethod
     def start_xorg(klass):
         '''start X.org server with dummy driver'''


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]