]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Test if language can be retrieved when accounts service not running
authorRobert Ancell <robert.ancell@canonical.com>
Tue, 24 Jan 2012 01:02:01 +0000 (12:02 +1100)
committerRobert Ancell <robert.ancell@canonical.com>
Tue, 24 Jan 2012 01:02:01 +0000 (12:02 +1100)
liblightdm-gobject/user.c
src/display.c
tests/Makefile.am
tests/scripts/language-no-accounts-service.conf [new file with mode: 0644]
tests/test-language-no-accounts-service [new file with mode: 0755]

index c8fbf7d41d8ee01dbe67f285accd164bdc657c66..4e4e1061ef0927be1b46645552f7ba808ed61d68 100644 (file)
@@ -768,11 +768,16 @@ update_users (LightDMUserList *user_list)
     }
     else
     {
+        const gchar *passwd_filename;
         GFile *passwd_file;
 
         load_passwd_file (user_list, FALSE);
 
         /* Watch for changes to user list */
+
+        passwd_filename = g_getenv ("LIGHTDM_TEST_PASSWD_FILE");
+        if (!passwd_filename)
+            passwd_filename = PASSWD_FILE;
         passwd_file = g_file_new_for_path (PASSWD_FILE);
         priv->passwd_monitor = g_file_monitor (passwd_file, G_FILE_MONITOR_NONE, NULL, &error);
         g_object_unref (passwd_file);
@@ -1127,14 +1132,9 @@ load_dmrc (LightDMUser *user)
 
     // FIXME: Watch for changes
 
+    /* The Language field is actually a locale, strip the codeset off it to get the language */
     if (priv->language)
         g_free (priv->language);
-    if (priv->layout)
-        g_free (priv->layout);
-    if (priv->session)
-        g_free (priv->session);
-
-    /* The Language field is actually a locale, strip the codeset off it to get the language */
     priv->language = g_key_file_get_string (priv->dmrc_file, "Desktop", "Language", NULL);
     if (priv->language)
     {
@@ -1143,7 +1143,12 @@ load_dmrc (LightDMUser *user)
             *codeset = '\0';
     }
 
+    if (priv->layout)
+        g_free (priv->layout);
     priv->layout = g_key_file_get_string (priv->dmrc_file, "Desktop", "Layout", NULL);
+
+    if (priv->session)
+        g_free (priv->session);
     priv->session = g_key_file_get_string (priv->dmrc_file, "Desktop", "Session", NULL);
 }
 
@@ -1189,15 +1194,16 @@ load_accounts_service (LightDMUser *user)
 {
     LightDMUserPrivate *priv = GET_USER_PRIVATE (user);
     LightDMUserListPrivate *list_priv = GET_LIST_PRIVATE (priv->user_list);
-
-    /* First, find AccountObject proxy */
     UserAccountObject *account = NULL;
     GList *iter;
+
+    /* First, find AccountObject proxy */
     for (iter = list_priv->user_account_objects; iter; iter = iter->next)
     {
-        if (((UserAccountObject *)iter->data)->user == user)
+        UserAccountObject *a = iter->data;
+        if (a->user == user)
         {
-            account = (UserAccountObject *)iter->data;
+            account = a;
             break;
         }
     }
@@ -1207,9 +1213,9 @@ load_accounts_service (LightDMUser *user)
     /* We have proxy, let's grab some properties */
     if (priv->language)
         g_free (priv->language);
+    priv->language = get_string_property (account->proxy, "Language");
     if (priv->session)
         g_free (priv->session);
-    priv->language = get_string_property (account->proxy, "Language");
     priv->session = get_string_property (account->proxy, "XSession");
 
     return TRUE;
index dd12ec98b88cc6048aaf608043f53db0fb6a5e6f..a84ecbad26099f65f0f2798d08019ef94eaaf750 100644 (file)
@@ -507,6 +507,7 @@ create_session (Display *display, PAMSession *authentication, const gchar *sessi
         session_set_env (session, "LIGHTDM_TEST_STATUS_SOCKET", g_getenv ("LIGHTDM_TEST_STATUS_SOCKET"));
         session_set_env (session, "LIGHTDM_TEST_CONFIG", g_getenv ("LIGHTDM_TEST_CONFIG"));
         session_set_env (session, "LIGHTDM_TEST_HOME_DIR", g_getenv ("LIGHTDM_TEST_HOME_DIR"));
+        session_set_env (session, "LIGHTDM_TEST_PASSWD_FILE", g_getenv ("LIGHTDM_TEST_PASSWD_FILE"));
         session_set_env (session, "DBUS_SYSTEM_BUS_ADDRESS", g_getenv ("DBUS_SYSTEM_BUS_ADDRESS"));
         session_set_env (session, "DBUS_SESSION_BUS_ADDRESS", g_getenv ("DBUS_SESSION_BUS_ADDRESS"));
         session_set_env (session, "LD_PRELOAD", g_getenv ("LD_PRELOAD"));
index 9508f31c6918fb50dde1e6afa0307dff74648b92..1c575e28b485c1638fcfc188bc3ce2968e1c7c25 100644 (file)
@@ -19,6 +19,9 @@ TESTS = \
        test-autologin-guest-logout \
        test-keyboard-layout \
        test-no-keyboard-layout \
+       test-language \
+       test-no-language \
+       test-language-no-accounts-service \
        test-login-gobject \
        test-login-gobject-manual \
        test-login-gobject-manual-previous-session \
@@ -104,6 +107,7 @@ EXTRA_DIST = \
        scripts/home-dir-on-authenticate.conf \
        scripts/keyboard-layout.conf \
        scripts/language.conf \
+       scripts/language-no-accounts-service.conf \
        scripts/login.conf \
        scripts/login-guest.conf \
        scripts/login-guest-disabled.conf \
diff --git a/tests/scripts/language-no-accounts-service.conf b/tests/scripts/language-no-accounts-service.conf
new file mode 100644 (file)
index 0000000..617bda6
--- /dev/null
@@ -0,0 +1,38 @@
+#
+# Check returns correct language for a user when Accounts Service is not running
+#
+
+[test-runner-config]
+disable-accounts-service=true
+
+[LightDM]
+minimum-display-number=50
+
+[test-greeter-config]
+log-language=bob
+
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER :50 START
+#?XSERVER :50 INDICATE-READY
+
+# LightDM connects to X server
+#?XSERVER :50 ACCEPT-CONNECT
+
+# Greeter starts
+#?GREETER START
+#?XSERVER :50 ACCEPT-CONNECT
+#?GREETER CONNECT-XSERVER :50
+#?GREETER CONNECT-TO-DAEMON
+#?GREETER CONNECTED-TO-DAEMON
+
+# Correct layout is found
+#?GREETER GET-LANGUAGE USERNAME=bob LANGUAGE=en_AU
+
+# Cleanup
+#?*STOP-DAEMON
+# Don't know what order they will terminate
+#?(GREETER TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+#?(GREETER TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/test-language-no-accounts-service b/tests/test-language-no-accounts-service
new file mode 100755 (executable)
index 0000000..e070879
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner language-no-accounts-service test-gobject-greeter