diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2011-07-21 12:10:19 +1000 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2011-07-21 12:10:19 +1000 |
commit | e8b06ed5b32e8a935956c30f9ffd5b8b9cfb9525 (patch) | |
tree | 3938747385507140ada30e79b7789e21644feba2 | |
parent | cd44932249833f05511e96e90c72d5483da302af (diff) | |
download | lightdm-e8b06ed5b32e8a935956c30f9ffd5b8b9cfb9525.tar.gz |
Added first Qt regression test
-rw-r--r-- | .bzrignore | 2 | ||||
-rw-r--r-- | doc/lightdm-gobject-1-sections.txt | 2 | ||||
-rw-r--r-- | doc/tmpl/greeter.sgml | 12 | ||||
-rw-r--r-- | liblightdm-gobject/greeter.c | 20 | ||||
-rw-r--r-- | liblightdm-gobject/lightdm/greeter.h | 2 | ||||
-rw-r--r-- | liblightdm-qt/QLightDM/Greeter | 4 | ||||
-rw-r--r-- | liblightdm-qt/greeter.cpp | 14 | ||||
-rw-r--r-- | tests/Makefile.am | 49 | ||||
-rw-r--r-- | tests/data/xgreeters/test-gobject-greeter.desktop | 4 | ||||
-rw-r--r-- | tests/data/xgreeters/test-greeter.desktop | 4 | ||||
-rw-r--r-- | tests/data/xgreeters/test-qt-greeter.desktop | 4 | ||||
-rw-r--r-- | tests/scripts/login-guest-disabled.conf (renamed from tests/scripts/login-gobject-guest-disabled.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login-guest-disabled.script (renamed from tests/scripts/login-gobject-guest-disabled.script) | 0 | ||||
-rw-r--r-- | tests/scripts/login-guest-fail-setup-script.conf (renamed from tests/scripts/login-gobject-guest-fail-setup-script.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login-guest-fail-setup-script.script (renamed from tests/scripts/login-gobject-guest-fail-setup-script.script) | 0 | ||||
-rw-r--r-- | tests/scripts/login-guest-no-config.conf (renamed from tests/scripts/login-gobject-guest-no-config.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login-guest-no-config.script (renamed from tests/scripts/login-gobject-guest-no-config.script) | 0 | ||||
-rw-r--r-- | tests/scripts/login-guest-no-setup-script.conf (renamed from tests/scripts/login-gobject-guest-no-setup-script.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login-guest-no-setup-script.script (renamed from tests/scripts/login-gobject-guest-no-setup-script.script) | 0 | ||||
-rw-r--r-- | tests/scripts/login-guest.conf (renamed from tests/scripts/login-gobject-guest.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login-guest.script (renamed from tests/scripts/login-gobject-guest.script) | 0 | ||||
-rw-r--r-- | tests/scripts/login-invalid-user.conf (renamed from tests/scripts/login-gobject-invalid-user.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login-invalid-user.script (renamed from tests/scripts/login-gobject-invalid-user.script) | 0 | ||||
-rw-r--r-- | tests/scripts/login-logout.conf (renamed from tests/scripts/login-gobject-logout.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login-logout.script (renamed from tests/scripts/login-gobject-logout.script) | 0 | ||||
-rw-r--r-- | tests/scripts/login-manual.conf (renamed from tests/scripts/login-gobject-manual.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login-manual.script (renamed from tests/scripts/login-gobject-manual.script) | 0 | ||||
-rw-r--r-- | tests/scripts/login-no-password.conf (renamed from tests/scripts/login-gobject-no-password.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login-no-password.script (renamed from tests/scripts/login-gobject-no-password.script) | 0 | ||||
-rw-r--r-- | tests/scripts/login-session-crash.conf (renamed from tests/scripts/login-gobject-session-crash.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login-session-crash.script (renamed from tests/scripts/login-gobject-session-crash.script) | 0 | ||||
-rw-r--r-- | tests/scripts/login-wrong-password.conf (renamed from tests/scripts/login-gobject-wrong-password.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login-wrong-password.script (renamed from tests/scripts/login-gobject-wrong-password.script) | 0 | ||||
-rw-r--r-- | tests/scripts/login-xserver-crash.conf (renamed from tests/scripts/login-gobject-xserver-crash.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login-xserver-crash.script (renamed from tests/scripts/login-gobject-xserver-crash.script) | 0 | ||||
-rw-r--r-- | tests/scripts/login.conf (renamed from tests/scripts/login-gobject.conf) | 0 | ||||
-rw-r--r-- | tests/scripts/login.script (renamed from tests/scripts/login-gobject.script) | 0 | ||||
-rw-r--r-- | tests/src/Makefile.am | 18 | ||||
-rw-r--r-- | tests/src/status.h | 8 | ||||
-rw-r--r-- | tests/src/test-qt-greeter.cpp | 147 | ||||
-rw-r--r-- | tests/src/test-qt-greeter.h | 14 | ||||
-rw-r--r-- | tests/src/test-runner.c | 12 | ||||
-rwxr-xr-x | tests/test-autologin-logout | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-guest | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-guest-disabled | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-guest-fail-setup-script | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-guest-no-config | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-guest-no-setup-script | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-invalid-user | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-logout | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-manual | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-no-password | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-session-crash | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-wrong-password | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-xserver-crash | 2 | ||||
-rwxr-xr-x | tests/test-login-qt | 2 | ||||
-rwxr-xr-x | tests/test-no-config | 2 | ||||
-rwxr-xr-x | tests/test-plymouth-active-vt | 2 | ||||
-rwxr-xr-x | tests/test-plymouth-inactive-vt | 2 | ||||
-rwxr-xr-x | tests/test-plymouth-xserver-fail-start | 2 | ||||
-rwxr-xr-x | tests/test-switch-to-greeter | 2 | ||||
-rwxr-xr-x | tests/test-switch-to-guest | 2 | ||||
-rwxr-xr-x | tests/test-switch-to-user | 2 | ||||
-rwxr-xr-x | tests/test-xdmcp-login | 2 | ||||
-rwxr-xr-x | tests/test-xserver-fail-start | 2 |
66 files changed, 282 insertions, 82 deletions
@@ -53,8 +53,10 @@ src/ldm-marshal.c src/ldm-marshal.h src/lightdm tests/data/passwd +tests/src/*_moc.cpp tests/src/plymouth tests/src/test-gobject-greeter +tests/src/test-qt-greeter tests/src/test-runner tests/src/test-session tests/src/test-xserver diff --git a/doc/lightdm-gobject-1-sections.txt b/doc/lightdm-gobject-1-sections.txt index e3d1821d..8ac42e18 100644 --- a/doc/lightdm-gobject-1-sections.txt +++ b/doc/lightdm-gobject-1-sections.txt @@ -118,10 +118,10 @@ LIGHTDM_USER_LIST_GET_CLASS <SECTION> <FILE>greeter</FILE> <TITLE>Greeter Interface</TITLE> -autologin_timer_expired show_message show_prompt authentication_complete +autologin_timer_expired LightDMMessageType LightDMPromptType lightdm_greeter_new diff --git a/doc/tmpl/greeter.sgml b/doc/tmpl/greeter.sgml index d12b2998..101e7f02 100644 --- a/doc/tmpl/greeter.sgml +++ b/doc/tmpl/greeter.sgml @@ -80,15 +80,17 @@ static void quit_cb (LightDMGreeter *greeter) <!-- ##### SECTION Image ##### --> -<!-- ##### USER_FUNCTION autologin_timer_expired ##### --> +<!-- ##### USER_FUNCTION show_message ##### --> <para> </para> @greeter: +@text: +@type: -<!-- ##### USER_FUNCTION show_message ##### --> +<!-- ##### USER_FUNCTION show_prompt ##### --> <para> </para> @@ -98,17 +100,15 @@ static void quit_cb (LightDMGreeter *greeter) @type: -<!-- ##### USER_FUNCTION show_prompt ##### --> +<!-- ##### USER_FUNCTION authentication_complete ##### --> <para> </para> @greeter: -@text: -@type: -<!-- ##### USER_FUNCTION authentication_complete ##### --> +<!-- ##### USER_FUNCTION autologin_timer_expired ##### --> <para> </para> diff --git a/liblightdm-gobject/greeter.c b/liblightdm-gobject/greeter.c index 053972d6..e7b3b0c3 100644 --- a/liblightdm-gobject/greeter.c +++ b/liblightdm-gobject/greeter.c @@ -269,30 +269,30 @@ handle_prompt_authentication (LightDMGreeter *greeter, guint8 *message, gsize me for (i = 0; i < n_messages; i++) { - int msg_style; - gchar *msg; + int style; + gchar *text; - msg_style = read_int (message, message_length, offset); - msg = read_string (message, message_length, offset); + style = read_int (message, message_length, offset); + text = read_string (message, message_length, offset); // FIXME: Should stop on prompts? - switch (msg_style) + switch (style) { case PAM_PROMPT_ECHO_OFF: - g_signal_emit (G_OBJECT (greeter), signals[SHOW_PROMPT], 0, msg, LIGHTDM_PROMPT_TYPE_SECRET); + g_signal_emit (G_OBJECT (greeter), signals[SHOW_PROMPT], 0, text, LIGHTDM_PROMPT_TYPE_SECRET); break; case PAM_PROMPT_ECHO_ON: - g_signal_emit (G_OBJECT (greeter), signals[SHOW_PROMPT], 0, msg, LIGHTDM_PROMPT_TYPE_QUESTION); + g_signal_emit (G_OBJECT (greeter), signals[SHOW_PROMPT], 0, text, LIGHTDM_PROMPT_TYPE_QUESTION); break; case PAM_ERROR_MSG: - g_signal_emit (G_OBJECT (greeter), signals[SHOW_MESSAGE], 0, msg, LIGHTDM_MESSAGE_TYPE_ERROR); + g_signal_emit (G_OBJECT (greeter), signals[SHOW_MESSAGE], 0, text, LIGHTDM_MESSAGE_TYPE_ERROR); break; case PAM_TEXT_INFO: - g_signal_emit (G_OBJECT (greeter), signals[SHOW_MESSAGE], 0, msg, LIGHTDM_MESSAGE_TYPE_INFO); + g_signal_emit (G_OBJECT (greeter), signals[SHOW_MESSAGE], 0, text, LIGHTDM_MESSAGE_TYPE_INFO); break; } - g_free (msg); + g_free (text); } } diff --git a/liblightdm-gobject/lightdm/greeter.h b/liblightdm-gobject/lightdm/greeter.h index b0786ef7..157af3fc 100644 --- a/liblightdm-gobject/lightdm/greeter.h +++ b/liblightdm-gobject/lightdm/greeter.h @@ -54,8 +54,8 @@ typedef struct { GObjectClass parent_class; - void (*show_prompt)(LightDMGreeter *greeter, const gchar *text, LightDMPromptType type); void (*show_message)(LightDMGreeter *greeter, const gchar *text, LightDMMessageType type); + void (*show_prompt)(LightDMGreeter *greeter, const gchar *text, LightDMPromptType type); void (*authentication_complete)(LightDMGreeter *greeter); void (*autologin_timer_expired)(LightDMGreeter *greeter); } LightDMGreeterClass; diff --git a/liblightdm-qt/QLightDM/Greeter b/liblightdm-qt/QLightDM/Greeter index f6170e31..2f41f868 100644 --- a/liblightdm-qt/QLightDM/Greeter +++ b/liblightdm-qt/QLightDM/Greeter @@ -67,8 +67,8 @@ namespace QLightDM bool startSessionSync(const QString &session=QString()); signals: - void showPrompt(QString prompt, PromptType type); - void showMessage(QString message, MessageType type); + void showMessage(QString text, QLightDM::MessageType type); + void showPrompt(QString text, QLightDM::PromptType type); void authenticationComplete(); void autologinTimerExpired(); diff --git a/liblightdm-qt/greeter.cpp b/liblightdm-qt/greeter.cpp index 69aee65f..6b4ca2e7 100644 --- a/liblightdm-qt/greeter.cpp +++ b/liblightdm-qt/greeter.cpp @@ -388,23 +388,23 @@ void Greeter::onRead(int fd) qDebug() << "Prompt user with " << nMessages << " message(s)"; for(int i = 0; i < nMessages; i++) { - int msgStyle = readInt(message, messageLength, &offset); - QString msg = readString(message, messageLength, &offset); + int style = readInt(message, messageLength, &offset); + QString text = readString(message, messageLength, &offset); // FIXME: Should stop on prompts? - switch (msgStyle) + switch (style) { case PAM_PROMPT_ECHO_OFF: - emit showPrompt(msg, PROMPT_TYPE_SECRET); + emit showPrompt(text, PROMPT_TYPE_SECRET); break; case PAM_PROMPT_ECHO_ON: - emit showPrompt(msg, PROMPT_TYPE_QUESTION); + emit showPrompt(text, PROMPT_TYPE_QUESTION); break; case PAM_ERROR_MSG: - emit showMessage(msg, MESSAGE_TYPE_ERROR); + emit showMessage(text, MESSAGE_TYPE_ERROR); break; case PAM_TEXT_INFO: - emit showMessage(msg, MESSAGE_TYPE_INFO); + emit showMessage(text, MESSAGE_TYPE_INFO); break; } } diff --git a/tests/Makefile.am b/tests/Makefile.am index 398432fa..b6fa1f31 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -19,6 +19,7 @@ TESTS = \ test-login-gobject-guest-disabled \ test-login-gobject-guest-no-setup-script \ test-login-gobject-guest-fail-setup-script \ + test-login-qt \ test-plymouth-active-vt \ test-plymouth-inactive-vt \ test-plymouth-xserver-fail-start \ @@ -46,30 +47,30 @@ EXTRA_DIST = \ scripts/headless.script \ scripts/login-gobject.conf \ scripts/login-gobject.script \ - scripts/login-gobject-guest.conf \ - scripts/login-gobject-guest.script \ - scripts/login-gobject-guest-disabled.conf \ - scripts/login-gobject-guest-disabled.script \ - scripts/login-gobject-guest-fail-setup-script.conf \ - scripts/login-gobject-guest-fail-setup-script.script \ - scripts/login-gobject-guest-no-config.conf \ - scripts/login-gobject-guest-no-config.script \ - scripts/login-gobject-guest-no-setup-script.conf \ - scripts/login-gobject-guest-no-setup-script.script \ - scripts/login-gobject-invalid-user.conf \ - scripts/login-gobject-invalid-user.script \ - scripts/login-gobject-logout.conf \ - scripts/login-gobject-logout.script \ - scripts/login-gobject-manual.conf \ - scripts/login-gobject-manual.script \ - scripts/login-gobject-no-password.conf \ - scripts/login-gobject-no-password.script \ - scripts/login-gobject-session-crash.conf \ - scripts/login-gobject-session-crash.script \ - scripts/login-gobject-wrong-password.conf \ - scripts/login-gobject-wrong-password.script \ - scripts/login-gobject-xserver-crash.conf \ - scripts/login-gobject-xserver-crash.script \ + scripts/login-guest.conf \ + scripts/login-guest.script \ + scripts/login-guest-disabled.conf \ + scripts/login-guest-disabled.script \ + scripts/login-guest-fail-setup-script.conf \ + scripts/login-guest-fail-setup-script.script \ + scripts/login-guest-no-config.conf \ + scripts/login-guest-no-config.script \ + scripts/login-guest-no-setup-script.conf \ + scripts/login-guest-no-setup-script.script \ + scripts/login-invalid-user.conf \ + scripts/login-invalid-user.script \ + scripts/login-logout.conf \ + scripts/login-logout.script \ + scripts/login-manual.conf \ + scripts/login-manual.script \ + scripts/login-no-password.conf \ + scripts/login-no-password.script \ + scripts/login-session-crash.conf \ + scripts/login-session-crash.script \ + scripts/login-wrong-password.conf \ + scripts/login-wrong-password.script \ + scripts/login-xserver-crash.conf \ + scripts/login-xserver-crash.script \ scripts/no-config.script \ scripts/plymouth-active-vt.conf \ scripts/plymouth-active-vt.script \ diff --git a/tests/data/xgreeters/test-gobject-greeter.desktop b/tests/data/xgreeters/test-gobject-greeter.desktop new file mode 100644 index 00000000..19e841ca --- /dev/null +++ b/tests/data/xgreeters/test-gobject-greeter.desktop @@ -0,0 +1,4 @@ +[Desktop Entry] +Name=Test GObject Greeter +Comment=LightDM test GObject greeter +Exec=test-gobject-greeter diff --git a/tests/data/xgreeters/test-greeter.desktop b/tests/data/xgreeters/test-greeter.desktop deleted file mode 100644 index fcad730f..00000000 --- a/tests/data/xgreeters/test-greeter.desktop +++ /dev/null @@ -1,4 +0,0 @@ -[Desktop Entry] -Name=Test Greeter -Comment=LightDM test greeter -Exec=test-gobject-greeter diff --git a/tests/data/xgreeters/test-qt-greeter.desktop b/tests/data/xgreeters/test-qt-greeter.desktop new file mode 100644 index 00000000..64870e6d --- /dev/null +++ b/tests/data/xgreeters/test-qt-greeter.desktop @@ -0,0 +1,4 @@ +[Desktop Entry] +Name=Test Qt Greeter +Comment=LightDM test Qt greeter +Exec=test-qt-greeter diff --git a/tests/scripts/login-gobject-guest-disabled.conf b/tests/scripts/login-guest-disabled.conf index f09a8c48..f09a8c48 100644 --- a/tests/scripts/login-gobject-guest-disabled.conf +++ b/tests/scripts/login-guest-disabled.conf diff --git a/tests/scripts/login-gobject-guest-disabled.script b/tests/scripts/login-guest-disabled.script index dc83a232..dc83a232 100644 --- a/tests/scripts/login-gobject-guest-disabled.script +++ b/tests/scripts/login-guest-disabled.script diff --git a/tests/scripts/login-gobject-guest-fail-setup-script.conf b/tests/scripts/login-guest-fail-setup-script.conf index 51c88208..51c88208 100644 --- a/tests/scripts/login-gobject-guest-fail-setup-script.conf +++ b/tests/scripts/login-guest-fail-setup-script.conf diff --git a/tests/scripts/login-gobject-guest-fail-setup-script.script b/tests/scripts/login-guest-fail-setup-script.script index 8f9ec184..8f9ec184 100644 --- a/tests/scripts/login-gobject-guest-fail-setup-script.script +++ b/tests/scripts/login-guest-fail-setup-script.script diff --git a/tests/scripts/login-gobject-guest-no-config.conf b/tests/scripts/login-guest-no-config.conf index 50fc6fb5..50fc6fb5 100644 --- a/tests/scripts/login-gobject-guest-no-config.conf +++ b/tests/scripts/login-guest-no-config.conf diff --git a/tests/scripts/login-gobject-guest-no-config.script b/tests/scripts/login-guest-no-config.script index 817c7522..817c7522 100644 --- a/tests/scripts/login-gobject-guest-no-config.script +++ b/tests/scripts/login-guest-no-config.script diff --git a/tests/scripts/login-gobject-guest-no-setup-script.conf b/tests/scripts/login-guest-no-setup-script.conf index 51c88208..51c88208 100644 --- a/tests/scripts/login-gobject-guest-no-setup-script.conf +++ b/tests/scripts/login-guest-no-setup-script.conf diff --git a/tests/scripts/login-gobject-guest-no-setup-script.script b/tests/scripts/login-guest-no-setup-script.script index f4738239..f4738239 100644 --- a/tests/scripts/login-gobject-guest-no-setup-script.script +++ b/tests/scripts/login-guest-no-setup-script.script diff --git a/tests/scripts/login-gobject-guest.conf b/tests/scripts/login-guest.conf index 15dad7af..15dad7af 100644 --- a/tests/scripts/login-gobject-guest.conf +++ b/tests/scripts/login-guest.conf diff --git a/tests/scripts/login-gobject-guest.script b/tests/scripts/login-guest.script index 56ebe033..56ebe033 100644 --- a/tests/scripts/login-gobject-guest.script +++ b/tests/scripts/login-guest.script diff --git a/tests/scripts/login-gobject-invalid-user.conf b/tests/scripts/login-invalid-user.conf index 498627f7..498627f7 100644 --- a/tests/scripts/login-gobject-invalid-user.conf +++ b/tests/scripts/login-invalid-user.conf diff --git a/tests/scripts/login-gobject-invalid-user.script b/tests/scripts/login-invalid-user.script index 5e54492c..5e54492c 100644 --- a/tests/scripts/login-gobject-invalid-user.script +++ b/tests/scripts/login-invalid-user.script diff --git a/tests/scripts/login-gobject-logout.conf b/tests/scripts/login-logout.conf index 58aa488a..58aa488a 100644 --- a/tests/scripts/login-gobject-logout.conf +++ b/tests/scripts/login-logout.conf diff --git a/tests/scripts/login-gobject-logout.script b/tests/scripts/login-logout.script index c296e671..c296e671 100644 --- a/tests/scripts/login-gobject-logout.script +++ b/tests/scripts/login-logout.script diff --git a/tests/scripts/login-gobject-manual.conf b/tests/scripts/login-manual.conf index c345967d..c345967d 100644 --- a/tests/scripts/login-gobject-manual.conf +++ b/tests/scripts/login-manual.conf diff --git a/tests/scripts/login-gobject-manual.script b/tests/scripts/login-manual.script index ffd6d17f..ffd6d17f 100644 --- a/tests/scripts/login-gobject-manual.script +++ b/tests/scripts/login-manual.script diff --git a/tests/scripts/login-gobject-no-password.conf b/tests/scripts/login-no-password.conf index bb442c44..bb442c44 100644 --- a/tests/scripts/login-gobject-no-password.conf +++ b/tests/scripts/login-no-password.conf diff --git a/tests/scripts/login-gobject-no-password.script b/tests/scripts/login-no-password.script index ce46e851..ce46e851 100644 --- a/tests/scripts/login-gobject-no-password.script +++ b/tests/scripts/login-no-password.script diff --git a/tests/scripts/login-gobject-session-crash.conf b/tests/scripts/login-session-crash.conf index 690b8b2e..690b8b2e 100644 --- a/tests/scripts/login-gobject-session-crash.conf +++ b/tests/scripts/login-session-crash.conf diff --git a/tests/scripts/login-gobject-session-crash.script b/tests/scripts/login-session-crash.script index 1534be8f..1534be8f 100644 --- a/tests/scripts/login-gobject-session-crash.script +++ b/tests/scripts/login-session-crash.script diff --git a/tests/scripts/login-gobject-wrong-password.conf b/tests/scripts/login-wrong-password.conf index 5778c93c..5778c93c 100644 --- a/tests/scripts/login-gobject-wrong-password.conf +++ b/tests/scripts/login-wrong-password.conf diff --git a/tests/scripts/login-gobject-wrong-password.script b/tests/scripts/login-wrong-password.script index 461bce79..461bce79 100644 --- a/tests/scripts/login-gobject-wrong-password.script +++ b/tests/scripts/login-wrong-password.script diff --git a/tests/scripts/login-gobject-xserver-crash.conf b/tests/scripts/login-xserver-crash.conf index 1e9fcc92..1e9fcc92 100644 --- a/tests/scripts/login-gobject-xserver-crash.conf +++ b/tests/scripts/login-xserver-crash.conf diff --git a/tests/scripts/login-gobject-xserver-crash.script b/tests/scripts/login-xserver-crash.script index 9d47566d..9d47566d 100644 --- a/tests/scripts/login-gobject-xserver-crash.script +++ b/tests/scripts/login-xserver-crash.script diff --git a/tests/scripts/login-gobject.conf b/tests/scripts/login.conf index e232614d..e232614d 100644 --- a/tests/scripts/login-gobject.conf +++ b/tests/scripts/login.conf diff --git a/tests/scripts/login-gobject.script b/tests/scripts/login.script index a9a9f91c..a9a9f91c 100644 --- a/tests/scripts/login-gobject.script +++ b/tests/scripts/login.script diff --git a/tests/src/Makefile.am b/tests/src/Makefile.am index cc4522c9..138aafbd 100644 --- a/tests/src/Makefile.am +++ b/tests/src/Makefile.am @@ -1,6 +1,10 @@ noinst_PROGRAMS = test-runner test-xserver test-gobject-greeter test-session plymouth dist_noinst_SCRIPTS = test-setup-guest test-cleanup-guest +if COMPILE_LIBLIGHTDM_QT +noinst_PROGRAMS += test-qt-greeter +endif + test_runner_CFLAGS = \ $(WARN_CFLAGS) \ $(GLIB_CFLAGS) \ @@ -38,6 +42,17 @@ test_gobject_greeter_LDADD = \ $(GOBJECT_LIBS) \ $(XCB_LIBS) +test-qt-greeter_moc.cpp: test-qt-greeter.h + moc $< -o $@ +test_qt_greeter_SOURCES = test-qt-greeter.cpp test-qt-greeter_moc.cpp status.c status.h +test_qt_greeter_CXXFLAGS = \ + -I$(top_srcdir)/liblightdm-qt \ + $(LIGHTDM_QT_GREETER_CFLAGS) +test_qt_greeter_LDADD = \ + -L$(top_builddir)/liblightdm-qt \ + -llightdm-qt-1 \ + $(LIGHTDM_QT_GREETER_LIBS) + test_session_SOURCES = test-session.c status.c status.h test_session_CFLAGS = \ $(WARN_CFLAGS) \ @@ -53,3 +68,6 @@ plymouth_CFLAGS = \ $(GLIB_CFLAGS) plymouth_LDADD = \ $(GLIB_LIBS) + +CLEANFILES = \ + test-qt-greeter_moc.cpp diff --git a/tests/src/status.h b/tests/src/status.h index 99488ae9..5a1265b4 100644 --- a/tests/src/status.h +++ b/tests/src/status.h @@ -1,6 +1,14 @@ #ifndef _STATUS_H_ #define _STATUS_H_ +#ifdef __cplusplus +extern "C" { +#endif + void notify_status (const char *format, ...); +#ifdef __cplusplus +} +#endif + #endif /* _STATUS_H_ */ diff --git a/tests/src/test-qt-greeter.cpp b/tests/src/test-qt-greeter.cpp new file mode 100644 index 00000000..6ebe9d03 --- /dev/null +++ b/tests/src/test-qt-greeter.cpp @@ -0,0 +1,147 @@ +#include <stdlib.h> +#include <stdio.h> +#include <signal.h> +#include <xcb/xcb.h> +#include <QLightDM/Greeter> +#include <QtCore/QSettings> +#include <QtCore/QDebug> +#include <QtCore/QCoreApplication> + +#include "test-qt-greeter.h" +#include "status.h" + +static QSettings *config = NULL; + +TestGreeter::TestGreeter () +{ + connect (this, SIGNAL(showMessage(QString, QLightDM::MessageType)), SLOT(showMessage(QString, QLightDM::MessageType))); + connect (this, SIGNAL(showPrompt(QString, QLightDM::PromptType)), SLOT(showPrompt(QString, QLightDM::PromptType))); + connect (this, SIGNAL(authenticationComplete()), SLOT(authenticationComplete())); +} + +void TestGreeter::showMessage (QString text, QLightDM::MessageType type) +{ + notify_status ("GREETER SHOW-MESSAGE TEXT=\"%s\"", text.toAscii ().constData ()); +} + +void TestGreeter::showPrompt (QString text, QLightDM::PromptType type) +{ + notify_status ("GREETER SHOW-PROMPT TEXT=\"%s\"", text.toAscii ().constData ()); + + QString username = config->value ("test-greeter-config/username").toString (); + QString password = config->value ("test-greeter-config/password").toString (); + + QString response; + if (config->value ("test-greeter-config/prompt-username", "false") == "true") + { + config->setValue ("test-greeter-config/prompt-username", "false"); + response = username; + } + else if (password != "") + response = password; + + if (response != "") + { + notify_status ("GREETER RESPOND TEXT=\"%s\"", response.toAscii ().constData ()); + respond (response); + } +} + +void TestGreeter::authenticationComplete () +{ + notify_status ("GREETER AUTHENTICATION-COMPLETE AUTHENTICATED=%s", isAuthenticated () ? "TRUE" : "FALSE"); + if (!isAuthenticated ()) + return; + + if (startSessionSync ()) + { + notify_status ("GREETER QUIT"); + exit (EXIT_SUCCESS); + } + else + notify_status ("GREETER SESSION-FAILED"); +} + +static void +signal_cb (int signum) +{ + notify_status ("GREETER TERMINATE SIGNAL=%d", signum); + exit (EXIT_SUCCESS); +} + +int main(int argc, char *argv[]) +{ + QCoreApplication app(argc, argv); + + signal (SIGINT, signal_cb); + signal (SIGTERM, signal_cb); + + notify_status ("GREETER START"); + + if (getenv ("LIGHTDM_TEST_CONFIG")) + config = new QSettings(getenv ("LIGHTDM_TEST_CONFIG"), QSettings::IniFormat); + else + config = new QSettings(); + + xcb_connection_t *connection = xcb_connect (NULL, NULL); + + if (xcb_connection_has_error (connection)) + { + fprintf (stderr, "Error connecting to X server\n"); + return EXIT_FAILURE; + } + + notify_status ("GREETER CONNECT-XSERVER %s", getenv ("DISPLAY")); + + TestGreeter *greeter = new TestGreeter(); + + notify_status ("GREETER CONNECT-TO-DAEMON"); + if (!greeter->connectSync()) + return EXIT_FAILURE; + + notify_status ("GREETER CONNECTED-TO-DAEMON"); + + if (greeter->selectUserHint() != "") + { + notify_status ("GREETER AUTHENTICATE-SELECTED USERNAME=%s", greeter->selectUserHint ().toAscii ().constData ()); + greeter->authenticate (greeter->selectUserHint ()); + } + else + { + QString login_lock = QString (getenv ("LIGHTDM_TEST_HOME_DIR")) + "/.greeter-logged-in"; + FILE *f = fopen (login_lock.toAscii (), "r"); + if (f == NULL) + { + if (config->value ("test-greeter-config/login-guest", "false") == "true") + { + notify_status ("GREETER AUTHENTICATE-GUEST"); + greeter->authenticateAsGuest (); + } + else if (config->value ("test-greeter-config/prompt-username", "false") == "true") + { + notify_status ("GREETER AUTHENTICATE"); + greeter->authenticate (); + } + else + { + QString username = config->value ("test-greeter-config/username").toString (); + if (username != "") + { + notify_status ("GREETER AUTHENTICATE USERNAME=%s", username.toAscii ().constData ()); + greeter->authenticate (username); + } + } + + /* Write lock to stop repeatedly logging in */ + f = fopen (login_lock.toAscii (), "w"); + fclose (f); + } + else + { + qDebug () << "Not logging in, lock file detected " << login_lock; + fclose (f); + } + } + + return app.exec(); +} diff --git a/tests/src/test-qt-greeter.h b/tests/src/test-qt-greeter.h new file mode 100644 index 00000000..c224759f --- /dev/null +++ b/tests/src/test-qt-greeter.h @@ -0,0 +1,14 @@ +#include <QLightDM/Greeter> + +class TestGreeter : public QLightDM::Greeter +{ + Q_OBJECT + +public: + TestGreeter (); + +private slots: + void showMessage(QString text, QLightDM::MessageType type); + void showPrompt(QString text, QLightDM::PromptType type); + void authenticationComplete(); +}; diff --git a/tests/src/test-runner.c b/tests/src/test-runner.c index 487f9d28..abd49df0 100644 --- a/tests/src/test-runner.c +++ b/tests/src/test-runner.c @@ -433,7 +433,7 @@ int main (int argc, char **argv) { GMainLoop *loop; - gchar *script_name, *config_file, *config_path, *path, *path1, *path2, *ld_library_path, *home_dir; + gchar *greeter = NULL, *script_name, *config_file, *config_path, *path, *path1, *path2, *ld_library_path, *home_dir; GString *passwd_data; int status_socket; gchar *dbus_command, dbus_address[1024]; @@ -453,9 +453,9 @@ main (int argc, char **argv) loop = g_main_loop_new (NULL, FALSE); - if (argc != 2) + if (argc != 2 && argc != 3) { - g_printerr ("Usage %s SCRIPT-NAME\n", argv[0]); + g_printerr ("Usage %s SCRIPT-NAME [GREETER]\n", argv[0]); quit (EXIT_FAILURE); } script_name = argv[1]; @@ -463,6 +463,9 @@ main (int argc, char **argv) config_path = g_build_filename (SRCDIR, "tests", "scripts", config_file, NULL); g_free (config_file); + if (argc == 3) + greeter = argv[2]; + load_script (script_name); g_print ("----------------------------------------\n"); @@ -583,7 +586,8 @@ main (int argc, char **argv) g_string_append_printf (command_line, " --config %s", config_path); g_string_append (command_line, " --no-root"); g_string_append(command_line, " --xserver-command=test-xserver"); - g_string_append (command_line, " --greeter-session=test-greeter"); + if (greeter) + g_string_append_printf (command_line, " --greeter-session=%s", greeter); g_string_append (command_line, " --user-session=test-session"); g_string_append_printf (command_line, " --passwd-file %s/passwd", temp_dir); g_string_append_printf (command_line, " --cache-dir %s/cache", temp_dir); diff --git a/tests/test-autologin-logout b/tests/test-autologin-logout index a70d368b..5935c6f2 100755 --- a/tests/test-autologin-logout +++ b/tests/test-autologin-logout @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner autologin-logout +./src/test-runner autologin-logout test-gobject-greeter diff --git a/tests/test-login-gobject b/tests/test-login-gobject index 132d454e..2fd28290 100755 --- a/tests/test-login-gobject +++ b/tests/test-login-gobject @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject +./src/test-runner login test-gobject-greeter diff --git a/tests/test-login-gobject-guest b/tests/test-login-gobject-guest index 539b251a..7a06c8aa 100755 --- a/tests/test-login-gobject-guest +++ b/tests/test-login-gobject-guest @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject-guest +./src/test-runner login-guest test-gobject-greeter diff --git a/tests/test-login-gobject-guest-disabled b/tests/test-login-gobject-guest-disabled index 5230845a..feab997d 100755 --- a/tests/test-login-gobject-guest-disabled +++ b/tests/test-login-gobject-guest-disabled @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject-guest-disabled +./src/test-runner login-guest-disabled test-gobject-greeter diff --git a/tests/test-login-gobject-guest-fail-setup-script b/tests/test-login-gobject-guest-fail-setup-script index 3d244b9c..936337a3 100755 --- a/tests/test-login-gobject-guest-fail-setup-script +++ b/tests/test-login-gobject-guest-fail-setup-script @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject-guest-fail-setup-script +./src/test-runner login-guest-fail-setup-script test-gobject-greeter diff --git a/tests/test-login-gobject-guest-no-config b/tests/test-login-gobject-guest-no-config index 8df23f92..6e7c6dd2 100755 --- a/tests/test-login-gobject-guest-no-config +++ b/tests/test-login-gobject-guest-no-config @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject-guest-no-config +./src/test-runner login-guest-no-config test-gobject-greeter diff --git a/tests/test-login-gobject-guest-no-setup-script b/tests/test-login-gobject-guest-no-setup-script index ae76a8c6..52f76cd6 100755 --- a/tests/test-login-gobject-guest-no-setup-script +++ b/tests/test-login-gobject-guest-no-setup-script @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject-guest-no-setup-script +./src/test-runner login-guest-no-setup-script test-gobject-greeter diff --git a/tests/test-login-gobject-invalid-user b/tests/test-login-gobject-invalid-user index 0994b621..5feb87f3 100755 --- a/tests/test-login-gobject-invalid-user +++ b/tests/test-login-gobject-invalid-user @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject-invalid-user +./src/test-runner login-invalid-user test-gobject-greeter diff --git a/tests/test-login-gobject-logout b/tests/test-login-gobject-logout index ed49d930..0830d44c 100755 --- a/tests/test-login-gobject-logout +++ b/tests/test-login-gobject-logout @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject-logout +./src/test-runner login-logout test-gobject-greeter diff --git a/tests/test-login-gobject-manual b/tests/test-login-gobject-manual index a33ce953..29946f3f 100755 --- a/tests/test-login-gobject-manual +++ b/tests/test-login-gobject-manual @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject-manual +./src/test-runner login-manual test-gobject-greeter
\ No newline at end of file diff --git a/tests/test-login-gobject-no-password b/tests/test-login-gobject-no-password index 79267594..eae947a9 100755 --- a/tests/test-login-gobject-no-password +++ b/tests/test-login-gobject-no-password @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject-no-password +./src/test-runner login-no-password test-gobject-greeter diff --git a/tests/test-login-gobject-session-crash b/tests/test-login-gobject-session-crash index fe96aded..3835decb 100755 --- a/tests/test-login-gobject-session-crash +++ b/tests/test-login-gobject-session-crash @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject-session-crash +./src/test-runner login-session-crash test-gobject-greeter diff --git a/tests/test-login-gobject-wrong-password b/tests/test-login-gobject-wrong-password index b0960445..d9640ea7 100755 --- a/tests/test-login-gobject-wrong-password +++ b/tests/test-login-gobject-wrong-password @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject-wrong-password +./src/test-runner login-wrong-password test-gobject-greeter diff --git a/tests/test-login-gobject-xserver-crash b/tests/test-login-gobject-xserver-crash index 6de9ef3d..65001c76 100755 --- a/tests/test-login-gobject-xserver-crash +++ b/tests/test-login-gobject-xserver-crash @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner login-gobject-xserver-crash +./src/test-runner login-xserver-crash test-gobject-greeter diff --git a/tests/test-login-qt b/tests/test-login-qt new file mode 100755 index 00000000..163f9ab4 --- /dev/null +++ b/tests/test-login-qt @@ -0,0 +1,2 @@ +#!/bin/sh +./src/test-runner login test-qt-greeter diff --git a/tests/test-no-config b/tests/test-no-config index 84972d44..92fd44fc 100755 --- a/tests/test-no-config +++ b/tests/test-no-config @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner no-config +./src/test-runner no-config test-gobject-greeter diff --git a/tests/test-plymouth-active-vt b/tests/test-plymouth-active-vt index e00c63e8..7b67cf63 100755 --- a/tests/test-plymouth-active-vt +++ b/tests/test-plymouth-active-vt @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner plymouth-active-vt +./src/test-runner plymouth-active-vt test-gobject-greeter diff --git a/tests/test-plymouth-inactive-vt b/tests/test-plymouth-inactive-vt index 65b75bdb..d4380550 100755 --- a/tests/test-plymouth-inactive-vt +++ b/tests/test-plymouth-inactive-vt @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner plymouth-inactive-vt +./src/test-runner plymouth-inactive-vt test-gobject-greeter diff --git a/tests/test-plymouth-xserver-fail-start b/tests/test-plymouth-xserver-fail-start index fd125d3e..d015457e 100755 --- a/tests/test-plymouth-xserver-fail-start +++ b/tests/test-plymouth-xserver-fail-start @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner plymouth-xserver-fail-start +./src/test-runner plymouth-xserver-fail-start test-gobject-greeter diff --git a/tests/test-switch-to-greeter b/tests/test-switch-to-greeter index 4106c304..6953846b 100755 --- a/tests/test-switch-to-greeter +++ b/tests/test-switch-to-greeter @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner switch-to-greeter +./src/test-runner switch-to-greeter test-gobject-greeter diff --git a/tests/test-switch-to-guest b/tests/test-switch-to-guest index ba52aa97..75ce1123 100755 --- a/tests/test-switch-to-guest +++ b/tests/test-switch-to-guest @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner switch-to-guest +./src/test-runner switch-to-guest test-gobject-greeter diff --git a/tests/test-switch-to-user b/tests/test-switch-to-user index 172822ea..716b06d9 100755 --- a/tests/test-switch-to-user +++ b/tests/test-switch-to-user @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner switch-to-user +./src/test-runner switch-to-user test-gobject-greeter diff --git a/tests/test-xdmcp-login b/tests/test-xdmcp-login index 91ada353..d2a66b82 100755 --- a/tests/test-xdmcp-login +++ b/tests/test-xdmcp-login @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner xdmcp-login +./src/test-runner xdmcp-login test-gobject-greeter diff --git a/tests/test-xserver-fail-start b/tests/test-xserver-fail-start index dc3eddb7..bd88bbea 100755 --- a/tests/test-xserver-fail-start +++ b/tests/test-xserver-fail-start @@ -1,2 +1,2 @@ #!/bin/sh -./src/test-runner xserver-fail-start +./src/test-runner xserver-fail-start test-gobject-greeter |