[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