[pkg-fso-commits] [SCM] Automatic Display Manager branch, master, updated. debian/0.8-1-7-ga30dbc0

Enrico Zini enrico at enricozini.org
Fri Jul 8 17:47:14 UTC 2011


The following commit has been merged in the master branch:
commit 1b49a85c6c7d70763bfb8694e34621a7b61e7fd7
Author: Enrico Zini <enrico at enricozini.org>
Date:   Fri Jul 8 17:37:35 2011 +0100

    Adapt tests according to what is possible to run

diff --git a/test-xsession.c b/test-xsession.c
index f715080..cb28c3a 100644
--- a/test-xsession.c
+++ b/test-xsession.c
@@ -67,22 +67,12 @@ int test_session_x_killer(struct nodm_xsession_child* s)
     return E_SUCCESS;
 }
 
-void setup_dm(struct nodm_display_manager* dm, const char* xcmdline)
-{
-    nodm_display_manager_init(dm);
-    ensure_succeeds(nodm_display_manager_parse_xcmdline(dm, xcmdline));
-    dm->session.conf_use_pam = false;
-    dm->session.conf_cleanup_xse = false;
-    dm->session.conf_run_as[0] = 0;
-    dm->vt.conf_initial_vt = -1;
-}
-
 // X server starts, X session quits with success
 void test_trivial_session()
 {
     log_verbose("test_trivial_session");
     struct nodm_display_manager dm;
-    setup_dm(&dm, "/usr/bin/Xnest :1 -geometry 1x1+0+0");
+    test_setup_dm(&dm, NULL);
     dm.session.child_body = test_session;
 
     ensure_succeeds(nodm_display_manager_start(&dm));
@@ -98,7 +88,7 @@ void test_bad_x_server()
 {
     log_verbose("test_bad_x_server");
     struct nodm_display_manager dm;
-    setup_dm(&dm, "/bin/false :1 -geometry 1x1+0+0");
+    test_setup_dm(&dm, "/bin/false");
     dm.session.child_body = test_session;
 
     ensure_equali(nodm_display_manager_start(&dm), E_X_SERVER_DIED);
@@ -119,7 +109,7 @@ void test_failing_x_session()
 {
     log_verbose("test_failing_x_session");
     struct nodm_display_manager dm;
-    setup_dm(&dm, "/usr/bin/Xnest :1 -geometry 1x1+0+0");
+    test_setup_dm(&dm, NULL);
     dm.session.child_body = test_session_bad;
 
     ensure_succeeds(nodm_display_manager_start(&dm));
@@ -138,7 +128,7 @@ void test_dying_x_server()
 {
     log_verbose("test_dying_x_server");
     struct nodm_display_manager dm;
-    setup_dm(&dm, "/usr/bin/Xnest :1 -geometry 1x1+0+0");
+    test_setup_dm(&dm, NULL);
     dm.session.child_body = test_session_x_killer;
 
     ensure_succeeds(nodm_display_manager_start(&dm));
diff --git a/test-xstart.c b/test-xstart.c
index ee207c6..cd96dc5 100644
--- a/test-xstart.c
+++ b/test-xstart.c
@@ -31,7 +31,7 @@ int main(int argc, char* argv[])
     struct nodm_xserver srv;
     nodm_xserver_init(&srv);
 
-    const char* server_argv[] = { "/usr/bin/Xnest", ":1", "-geometry", "1x1+0+0", NULL };
+    const char* server_argv[] = { "/usr/bin/X", ":1", NULL };
     srv.argv = server_argv;
     srv.name = ":1";
 
diff --git a/test.c b/test.c
index bc9b0bd..734e914 100644
--- a/test.c
+++ b/test.c
@@ -20,8 +20,37 @@
 
 #include "test.h"
 #include "common.h"
+#include "dm.h"
 #include <string.h>
 #include <stdio.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <stdlib.h>
+
+void test_setup_dm(struct nodm_display_manager* dm, const char* xcmdline)
+{
+    bool run_nested = getenv("DISPLAY") != NULL;
+    bool is_root = getuid() == 0 || getenv("DISPLAY") != NULL;
+
+    nodm_display_manager_init(dm);
+    if (xcmdline == NULL)
+    {
+        if (run_nested)
+            xcmdline = "/usr/bin/Xnest :1 -geometry 1x1+0+0";
+        else
+            xcmdline = "";
+    }
+    ensure_succeeds(nodm_display_manager_parse_xcmdline(dm, xcmdline));
+    if (is_root)
+        strcpy(dm->session.conf_run_as, "root");
+    else
+    {
+        dm->session.conf_use_pam = false;
+        dm->session.conf_cleanup_xse = false;
+        dm->session.conf_run_as[0] = 0;
+        dm->vt.conf_initial_vt = -1;
+    }
+}
 
 void test_start(const char* testname, bool verbose)
 {
diff --git a/test.h b/test.h
index c8cd66c..399a2c1 100644
--- a/test.h
+++ b/test.h
@@ -25,6 +25,8 @@
 #include <stdlib.h>
 #include <stdbool.h>
 
+struct nodm_display_manager;
+
 /// Setup the logging system for a test script
 void test_start(const char* testname, bool verbose);
 
@@ -34,6 +36,17 @@ void test_fail() __attribute__((noreturn));
 /// exit() the program reporting a success
 void test_ok() __attribute__((noreturn));
 
+/**
+ * Setup DM for tests
+ *
+ * If running as root and no $DISPLAY is set, tries to start X, else tries to
+ * start xnest.
+ *
+ * @param xcmdline
+ *   Can be NULL for the appropriate default.
+ */
+void test_setup_dm(struct nodm_display_manager* dm, const char* xcmdline);
+
 /// Ensure that two strings are the same
 void ensure_equals(const char* a, const char* b);
 

-- 
Automatic Display Manager



More information about the pkg-fso-commits mailing list