summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2013-06-12 06:52:37 +0000
committerTarmac <>2013-06-12 06:52:37 +0000
commit5d7e75c8b14316110050feaa808e6ea3828adb07 (patch)
tree4bdeff8f48c3ad134c3ae40605acb9009cff2f9a
parent655d0309f900dc09725490d3546597cb34b9e520 (diff)
parentcd96a6281a9b5b4fbb117c0f6a61df626e9a2c94 (diff)
downloadlightdm-5d7e75c8b14316110050feaa808e6ea3828adb07.tar.gz
Make tests run from BUILDDIR.
Approved by PS Jenkins bot, Robert Ancell.
-rw-r--r--tests/src/libsystem.c11
-rw-r--r--tests/src/status.c2
-rwxr-xr-xtests/src/test-python-greeter4
-rw-r--r--tests/src/test-runner.c45
-rw-r--r--tests/src/x-server.c4
5 files changed, 39 insertions, 27 deletions
diff --git a/tests/src/libsystem.c b/tests/src/libsystem.c
index b0eeb331..e66e6f7e 100644
--- a/tests/src/libsystem.c
+++ b/tests/src/libsystem.c
@@ -1285,18 +1285,19 @@ xcb_connect_to_display_with_auth_info (const char *display, xcb_auth_info_t *aut
if (c->error == 0)
{
- const gchar *d;
+ gchar *d;
/* Skip the hostname, we'll assume it's localhost */
- d = strchr (display, ':');
+ d = g_strdup_printf (".x%s", strchr (display, ':'));
- socket_path = g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), "tmp", d, NULL);
+ socket_path = g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), d, NULL);
+ g_free (d);
address = g_unix_socket_address_new (socket_path);
- g_free (socket_path);
if (!g_socket_connect (c->socket, address, NULL, &error))
c->error = XCB_CONN_ERROR;
if (error)
- g_printerr ("%s\n", error->message);
+ g_printerr ("Failed to connect to X socket %s: %s\n", socket_path, error->message);
+ g_free (socket_path);
g_clear_error (&error);
}
diff --git a/tests/src/status.c b/tests/src/status.c
index 6ca6ce42..67cd7cac 100644
--- a/tests/src/status.c
+++ b/tests/src/status.c
@@ -59,7 +59,7 @@ status_connect (StatusRequestFunc request_cb)
if (!status_socket)
return;
- path = g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), ".status-socket", NULL);
+ path = g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), ".s", NULL);
address = g_unix_socket_address_new (path);
result = g_socket_connect (status_socket, address, NULL, &error);
g_object_unref (address);
diff --git a/tests/src/test-python-greeter b/tests/src/test-python-greeter
index d4fb818a..739c5671 100755
--- a/tests/src/test-python-greeter
+++ b/tests/src/test-python-greeter
@@ -180,7 +180,7 @@ def request_cb (channel, condition):
return True
-path = os.getenv ('LIGHTDM_TEST_ROOT') + '/.status-socket'
+path = os.getenv ('LIGHTDM_TEST_ROOT') + '/.s'
status_socket = socket.socket (socket.AF_UNIX, socket.SOCK_STREAM)
status_socket.connect (path)
GLib.io_add_watch (status_socket.fileno (), GLib.IO_IN | GLib.IO_HUP, request_cb)
@@ -194,7 +194,7 @@ config.load_from_file (os.getenv ('LIGHTDM_TEST_ROOT') + '/script', GLib.KeyFile
(host, display_number) = display.split (':')
if host == '':
x_socket = socket.socket (socket.AF_UNIX, socket.SOCK_STREAM)
- x_socket.connect (os.getenv ('LIGHTDM_TEST_ROOT') + '/tmp/' + display)
+ x_socket.connect (os.getenv ('LIGHTDM_TEST_ROOT') + '/.x' + display)
else:
x_socket = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
x_socket.connect ((host, 6000 + int (display_number)))
diff --git a/tests/src/test-runner.c b/tests/src/test-runner.c
index 707ff8d4..1015d1aa 100644
--- a/tests/src/test-runner.c
+++ b/tests/src/test-runner.c
@@ -239,7 +239,7 @@ quit (int status)
if (status_socket_name)
unlink (status_socket_name);
- if (temp_dir)
+ if (temp_dir && getenv ("DEBUG") == NULL)
{
gchar *command = g_strdup_printf ("rm -rf %s", temp_dir);
if (system (command))
@@ -1697,6 +1697,7 @@ int
main (int argc, char **argv)
{
GMainLoop *loop;
+ int i;
gchar *greeter = NULL, *script_name, *config_file, *path, *path1, *path2, *ld_preload, *ld_library_path, *home_dir;
GString *passwd_data, *group_data;
GSource *status_source;
@@ -1760,22 +1761,30 @@ main (int argc, char **argv)
g_setenv ("GI_TYPELIB_PATH", path1, TRUE);
g_free (path1);
- /* Run from a temporary directory */
- temp_dir = g_build_filename (g_get_tmp_dir (), "lightdm-test-XXXXXX", NULL);
- if (!mkdtemp (temp_dir))
- {
- g_warning ("Error creating temporary directory: %s", strerror (errno));
- quit (EXIT_FAILURE);
- }
- g_chmod (temp_dir, 0755);
+ /* Run in a temporary directory inside the build directory */
+ /* Note we have to pick a name that is short since Unix sockets in this directory have a 108 character limit on their paths */
+ i = 0;
+ while (TRUE) {
+ gchar *name;
+
+ name = g_strdup_printf (".r%d", i);
+ g_free (temp_dir);
+ temp_dir = g_build_filename ("/tmp", name, NULL);
+ g_free (name);
+ if (!g_file_test (temp_dir, G_FILE_TEST_EXISTS))
+ break;
+ i++;
+ }
+ g_mkdir_with_parents (temp_dir, 0755);
g_setenv ("LIGHTDM_TEST_ROOT", temp_dir, TRUE);
/* Open socket for status */
- status_socket_name = g_build_filename (temp_dir, ".status-socket", NULL);
+ /* Note we have to pick a socket name that is short since there is a 108 character limit on the name */
+ status_socket_name = g_build_filename (temp_dir, ".s", NULL);
unlink (status_socket_name);
status_socket = g_socket_new (G_SOCKET_FAMILY_UNIX, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_DEFAULT, &error);
if (error)
- g_warning ("Error creating status socket: %s", error->message);
+ g_warning ("Error creating status socket %s: %s", status_socket_name, error->message);
g_clear_error (&error);
if (status_socket)
{
@@ -1786,13 +1795,13 @@ main (int argc, char **argv)
result = g_socket_bind (status_socket, address, FALSE, &error);
g_object_unref (address);
if (error)
- g_warning ("Error binding status socket: %s", error->message);
+ g_warning ("Error binding status socket %s: %s", status_socket_name, error->message);
g_clear_error (&error);
if (result)
{
result = g_socket_listen (status_socket, &error);
if (error)
- g_warning ("Error listening on status socket: %s", error->message);
+ g_warning ("Error listening on status socket %s: %s", status_socket_name, error->message);
g_clear_error (&error);
}
if (!result)
@@ -1810,6 +1819,9 @@ main (int argc, char **argv)
/* Set up a skeleton file system */
g_mkdir_with_parents (g_strdup_printf ("%s/etc", temp_dir), 0755);
g_mkdir_with_parents (g_strdup_printf ("%s/usr/share", temp_dir), 0755);
+ g_mkdir_with_parents (g_strdup_printf ("%s/usr/share/xsessions", temp_dir), 0755);
+ g_mkdir_with_parents (g_strdup_printf ("%s/usr/share/remote-sessions", temp_dir), 0755);
+ g_mkdir_with_parents (g_strdup_printf ("%s/usr/share/xgreeters", temp_dir), 0755);
g_mkdir_with_parents (g_strdup_printf ("%s/tmp", temp_dir), 0755);
g_mkdir_with_parents (g_strdup_printf ("%s/var/run", temp_dir), 0755);
g_mkdir_with_parents (g_strdup_printf ("%s/var/log", temp_dir), 0755);
@@ -1825,11 +1837,11 @@ main (int argc, char **argv)
perror ("Failed to copy configuration");
/* Copy over the greeter files */
- if (system (g_strdup_printf ("cp -r %s/xsessions %s/usr/share", DATADIR, temp_dir)))
+ if (system (g_strdup_printf ("cp %s/xsessions/* %s/usr/share/xsessions", DATADIR, temp_dir)))
perror ("Failed to copy xsessions");
- if (system (g_strdup_printf ("cp -r %s/remote-sessions %s/usr/share", DATADIR, temp_dir)))
+ if (system (g_strdup_printf ("cp %s/remote-sessions/* %s/usr/share/remote-sessions", DATADIR, temp_dir)))
perror ("Failed to copy remote sessions");
- if (system (g_strdup_printf ("cp -r %s/xgreeters %s/usr/share", DATADIR, temp_dir)))
+ if (system (g_strdup_printf ("cp %s/xgreeters/* %s/usr/share/xgreeters", DATADIR, temp_dir)))
perror ("Failed to copy xgreeters");
/* Set up the default greeter */
@@ -1924,7 +1936,6 @@ main (int argc, char **argv)
};
passwd_data = g_string_new ("");
group_data = g_string_new ("");
- int i;
for (i = 0; users[i].user_name; i++)
{
GKeyFile *dmrc_file;
diff --git a/tests/src/x-server.c b/tests/src/x-server.c
index 0c9182ab..24003581 100644
--- a/tests/src/x-server.c
+++ b/tests/src/x-server.c
@@ -144,8 +144,8 @@ x_server_start (XServer *server)
gchar *name;
GError *error = NULL;
- name = g_strdup_printf (":%d", server->priv->display_number);
- server->priv->socket_path = g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), "tmp", name, NULL);
+ name = g_strdup_printf (".x:%d", server->priv->display_number);
+ server->priv->socket_path = g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), name, NULL);
g_free (name);
server->priv->socket = g_socket_new (G_SOCKET_FAMILY_UNIX, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_DEFAULT, &error);