summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2012-02-28 16:10:01 +1100
committerRobert Ancell <robert.ancell@canonical.com>2012-02-28 16:10:01 +1100
commit3a0488018cbd380eb7c764e486f1a43e749d9c61 (patch)
tree8b10f53a842c6b25e54c0656f8760376a78fde76 /tests
parent1d1f307891899c489bb568c8391b6fad347fe954 (diff)
downloadlightdm-3a0488018cbd380eb7c764e486f1a43e749d9c61.tar.gz
Don't send session stdout to .xsession-errors, add regression tests to confirm logging is working
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am4
-rw-r--r--tests/scripts/session-stderr.conf35
-rw-r--r--tests/scripts/session-stdout.conf35
-rw-r--r--tests/src/test-session.c24
-rwxr-xr-xtests/test-session-stderr2
-rwxr-xr-xtests/test-session-stdout2
6 files changed, 102 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 6600704e..3ee37195 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -17,6 +17,8 @@ TESTS = \
test-autologin-guest \
test-autologin-guest-fail-setup-script \
test-autologin-guest-logout \
+ test-session-stdout \
+ test-session-stderr \
test-user-renamed \
test-user-renamed-invalid \
test-keyboard-layout \
@@ -163,6 +165,8 @@ EXTRA_DIST = \
scripts/script-hook-fail-display-setup.conf \
scripts/script-hook-fail-greeter-setup.conf \
scripts/script-hook-fail-session-setup.conf \
+ scripts/session-stdout.conf \
+ scripts/session-stderr.conf \
scripts/switch-to-greeter.conf \
scripts/switch-to-guest.conf \
scripts/switch-to-user.conf \
diff --git a/tests/scripts/session-stderr.conf b/tests/scripts/session-stderr.conf
new file mode 100644
index 00000000..498dbc92
--- /dev/null
+++ b/tests/scripts/session-stderr.conf
@@ -0,0 +1,35 @@
+#
+# Check session stderr is written to ~/.xsession-errors
+#
+
+[LightDM]
+minimum-display-number=50
+
+[SeatDefaults]
+autologin-user=alice
+
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER :50 START
+#?XSERVER :50 INDICATE-READY
+
+# LightDM connects to X server
+#?XSERVER :50 ACCEPT-CONNECT
+
+# Session starts
+#?SESSION :50 START USER=alice
+#?XSERVER :50 ACCEPT-CONNECT
+#?SESSION :50 CONNECT-XSERVER
+
+# Write to stderr and check it shows up in the log
+#?*SESSION :50 WRITE-STDERR TEXT=THIS-SHOULD-BE-IN-XSESSION-ERRORS
+#?*SESSION :50 READ-XSESSION-ERRORS
+#?SESSION :50 READ-XSESSION-ERRORS TEXT=THIS-SHOULD-BE-IN-XSESSION-ERRORS
+
+# Cleanup
+#?*STOP-DAEMON
+# Don't know what order they will terminate
+#?(SESSION :50 TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+#?(SESSION :50 TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/scripts/session-stdout.conf b/tests/scripts/session-stdout.conf
new file mode 100644
index 00000000..cc48b500
--- /dev/null
+++ b/tests/scripts/session-stdout.conf
@@ -0,0 +1,35 @@
+#
+# Check session stdout is not written anywhere
+#
+
+[LightDM]
+minimum-display-number=50
+
+[SeatDefaults]
+autologin-user=alice
+
+#?RUNNER DAEMON-START
+
+# X server starts
+#?XSERVER :50 START
+#?XSERVER :50 INDICATE-READY
+
+# LightDM connects to X server
+#?XSERVER :50 ACCEPT-CONNECT
+
+# Session starts
+#?SESSION :50 START USER=alice
+#?XSERVER :50 ACCEPT-CONNECT
+#?SESSION :50 CONNECT-XSERVER
+
+# Write to stdout and check it doesn't end up in the session error log (you should also manually check when running the test if it is printed)
+#?*SESSION :50 WRITE-STDOUT TEXT=YOU-SHOULD-NOT-SEE-THIS
+#?*SESSION :50 READ-XSESSION-ERRORS
+#?SESSION :50 READ-XSESSION-ERRORS TEXT=
+
+# Cleanup
+#?*STOP-DAEMON
+# Don't know what order they will terminate
+#?(SESSION :50 TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+#?(SESSION :50 TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15)
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/src/test-session.c b/tests/src/test-session.c
index 36dc7f85..8f66e0a3 100644
--- a/tests/src/test-session.c
+++ b/tests/src/test-session.c
@@ -70,6 +70,30 @@ request_cb (const gchar *request)
status_notify ("SESSION %s LOCK-SESSION", getenv ("DISPLAY"));
}
g_free (r);
+
+ r = g_strdup_printf ("SESSION %s WRITE-STDOUT TEXT=", getenv ("DISPLAY"));
+ if (g_str_has_prefix (request, r))
+ g_print ("%s\n", request + strlen (r));
+ g_free (r);
+
+ r = g_strdup_printf ("SESSION %s WRITE-STDERR TEXT=", getenv ("DISPLAY"));
+ if (g_str_has_prefix (request, r))
+ g_printerr ("%s\n", request + strlen (r));
+ g_free (r);
+
+ r = g_strdup_printf ("SESSION %s READ-XSESSION-ERRORS", getenv ("DISPLAY"));
+ if (strcmp (request, r) == 0)
+ {
+ gchar *contents;
+ GError *error = NULL;
+
+ if (g_file_get_contents (".xsession-errors", &contents, NULL, &error))
+ status_notify ("SESSION %s READ-XSESSION-ERRORS TEXT=%s", getenv ("DISPLAY"), contents);
+ else
+ status_notify ("SESSION %s READ-XSESSION-ERRORS ERROR=%s", getenv ("DISPLAY"), error->message);
+ g_clear_error (&error);
+ }
+ g_free (r);
}
int
diff --git a/tests/test-session-stderr b/tests/test-session-stderr
new file mode 100755
index 00000000..2d6fe353
--- /dev/null
+++ b/tests/test-session-stderr
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner session-stderr test-gobject-greeter
diff --git a/tests/test-session-stdout b/tests/test-session-stdout
new file mode 100755
index 00000000..6566af55
--- /dev/null
+++ b/tests/test-session-stdout
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner session-stdout test-gobject-greeter