]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - tests/src/test-runner.c
Fix warning about status timeout
[sojka/lightdm.git] / tests / src / test-runner.c
index 8497f66bb756192c2be3b83960917abfb815f517..018007046f71256aaa1d644c3ca82e3d70fbe86c 100644 (file)
@@ -529,6 +529,7 @@ handle_command (const gchar *command)
         /* Stop status timeout */
         if (status_timeout)
             g_source_remove (status_timeout);
+        status_timeout = 0;
 
         /* Use a main loop so that our DBus functions are still responsive */
         GMainLoop *loop = g_main_loop_new (NULL, FALSE);
@@ -557,6 +558,25 @@ handle_command (const gchar *command)
         if (v)
             seat->can_multi_session = strcmp (v, "TRUE") == 0;
     }
+    else if (strcmp (name, "ADD-LOCAL-X-SEAT") == 0)
+    {
+        GVariant *result;
+        const gchar *v;
+
+        v = g_hash_table_lookup (params, "DISPLAY");
+        result = g_dbus_connection_call_sync (g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL),
+                                              "org.freedesktop.DisplayManager",
+                                              "/org/freedesktop/DisplayManager",
+                                              "org.freedesktop.DisplayManager",
+                                              "AddLocalXSeat",
+                                              g_variant_new ("(i)", v ? atoi (v) : -1),
+                                              G_VARIANT_TYPE ("(o)"),
+                                              G_DBUS_CALL_FLAGS_NONE,
+                                              G_MAXINT,
+                                              NULL,
+                                              NULL);
+        g_variant_unref (result);
+    }
     else if (strcmp (name, "UPDATE-SEAT") == 0)
     {
         Login1Seat *seat;
@@ -1023,10 +1043,12 @@ status_timeout_cb (gpointer data)
 {
     ScriptLine *line;
 
+    status_timeout = 0;
+
     line = get_script_line (NULL);
     fail ("(timeout)", line ? line->text : NULL);
 
-    return FALSE;
+    return G_SOURCE_REMOVE;
 }
 
 static void
@@ -1376,7 +1398,11 @@ handle_ck_session_call (GDBusConnection       *connection,
 {
     CKSession *session = user_data;
 
-    if (strcmp (method_name, "Lock") == 0)
+    if (strcmp (method_name, "GetXDGRuntimeDir") == 0 && !g_key_file_get_boolean (config, "test-runner-config", "ck-no-xdg-runtime", NULL))
+    {
+        g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", "/run/console-kit"));
+    }
+    else if (strcmp (method_name, "Lock") == 0)
     {
         if (!session->locked)
             check_status ("CONSOLE-KIT LOCK-SESSION");
@@ -1445,9 +1471,20 @@ ck_name_acquired_cb (GDBusConnection *connection,
     {
         handle_ck_call,
     };
+    const gchar *ck_session_interface_old =
+        "<node>"
+        "  <interface name='org.freedesktop.ConsoleKit.Session'>"
+        "    <method name='Lock'/>"
+        "    <method name='Unlock'/>"
+        "    <method name='Activate'/>"
+        "  </interface>"
+        "</node>";
     const gchar *ck_session_interface =
         "<node>"
         "  <interface name='org.freedesktop.ConsoleKit.Session'>"
+        "    <method name='GetXDGRuntimeDir'>"
+        "      <arg name='dir' direction='out' type='s'/>"
+        "    </method>"
         "    <method name='Lock'/>"
         "    <method name='Unlock'/>"
         "    <method name='Activate'/>"
@@ -1462,7 +1499,10 @@ ck_name_acquired_cb (GDBusConnection *connection,
     g_clear_error (&error);
     if (!ck_info)
         return;
-    ck_session_info = g_dbus_node_info_new_for_xml (ck_session_interface, &error);
+    if (g_key_file_get_boolean (config, "test-runner-config", "ck-no-xdg-runtime", NULL))
+        ck_session_info = g_dbus_node_info_new_for_xml (ck_session_interface_old, &error);
+    else
+        ck_session_info = g_dbus_node_info_new_for_xml (ck_session_interface, &error);  
     if (error)
         g_warning ("Failed to parse D-Bus interface: %s", error->message);
     g_clear_error (&error);
@@ -2616,6 +2656,8 @@ main (int argc, char **argv)
     if (!g_key_file_has_key (config, "test-runner-config", "have-config", NULL) || g_key_file_get_boolean (config, "test-runner-config", "have-config", NULL))
         if (system (g_strdup_printf ("cp %s %s/etc/lightdm/lightdm.conf", config_path, temp_dir)))
             perror ("Failed to copy configuration");
+    if (system (g_strdup_printf ("cp %s/tests/data/keys.conf %s/etc/lightdm/", SRCDIR, temp_dir)))
+        perror ("Failed to copy key configuration");
 
     additional_system_config = g_key_file_get_string (config, "test-runner-config", "additional-system-config", NULL);
     if (additional_system_config)