[PATCH xorg-gtest 05/16] xserver: move testing startup to the XServer object
Peter Hutterer
peter.hutterer at who-t.net
Tue Jul 3 22:34:11 PDT 2012
On Tue, Jul 03, 2012 at 10:30:28AM -0700, Chase Douglas wrote:
> On 07/02/2012 11:44 PM, Peter Hutterer wrote:
> >Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
>
> It makes sense to move the startup to the XServer object, but the
> environment should then contain an XServer object and start it. The
> point of the environment is that it starts up an xserver
> automatically.
>
> The xorg-gtest user is free to not use the environment. But when
> they use the environment, it should start a server.
It still does, it's just cut off from the Environment::SetUp() hunk though.
see below
> >---
> > include/xorg/gtest/xorg-gtest-xserver.h | 2 ++
> > src/environment.cpp | 35 ---------------------------
> > src/xserver.cpp | 40 +++++++++++++++++++++++++++++++
> > 3 files changed, 42 insertions(+), 35 deletions(-)
> >
> >diff --git a/include/xorg/gtest/xorg-gtest-xserver.h b/include/xorg/gtest/xorg-gtest-xserver.h
> >index 5c5ce99..52a2fd0 100644
> >--- a/include/xorg/gtest/xorg-gtest-xserver.h
> >+++ b/include/xorg/gtest/xorg-gtest-xserver.h
> >@@ -129,6 +129,8 @@ class XServer : public xorg::testing::Process {
> > XServer(const XServer&);
> > XServer& operator=(const XServer&);
> >
> >+ void TestStartup(void);
> >+
> > };
> > } // namespace testing
> > } // namespace xorg
> >diff --git a/src/environment.cpp b/src/environment.cpp
> >index 7ed23b3..69972a4 100644
> >--- a/src/environment.cpp
> >+++ b/src/environment.cpp
> >@@ -106,41 +106,6 @@ void xorg::testing::Environment::SetUp() {
> > static char display_string[6];
> > snprintf(display_string, 6, ":%d", d_->display);
> >
> >- Display* test_display = XOpenDisplay(display_string);
> >- if (test_display) {
> >- XCloseDisplay(test_display);
> >- std::string message;
> >- message += "A server is already running on ";
> >- message += display_string;
> >- message += ".";
> >- throw std::runtime_error(message);
> >- }
> >-
> >- /* The Xorg server won't start unless the log file and the old log file are
> >- * writable. */
> >- std::ofstream log_test;
> >- log_test.open(d_->path_to_log_file.c_str(), std::ofstream::out);
> >- log_test.close();
> >- if (log_test.fail()) {
> >- std::string message;
> >- message += "X.org server log file ";
> >- message += d_->path_to_log_file;
> >- message += " is not writable.";
> >- throw std::runtime_error(message);
> >- }
> >-
> >- std::string old_log_file = d_->path_to_log_file.c_str();
> >- old_log_file += ".old";
> >- log_test.open(old_log_file.c_str(), std::ofstream::out);
> >- log_test.close();
> >- if (log_test.fail()) {
> >- std::string message;
> >- message += "X.org old server log file ";
> >- message += old_log_file;
> >- message += " is not writable.";
> >- throw std::runtime_error(message);
> >- }
> >-
> > d_->server.SetDisplayNumber(d_->display);
> > d_->server.SetLogfilePath(d_->path_to_log_file);
> > d_->server.SetConfigPath(d_->path_to_conf);
is followed by
d_->server.Start(d_->path_to_server);
d_->server.WaitForConnections();
So nothing should change over the previous code. I haven't modified the
xi2.cpp code in the server which uses this environment and it still works.
Cheers,
Peter
> >diff --git a/src/xserver.cpp b/src/xserver.cpp
> >index 38394f3..1a46dbb 100644
> >--- a/src/xserver.cpp
> >+++ b/src/xserver.cpp
> >@@ -41,6 +41,7 @@
> > #include <cstring>
> > #include <stdexcept>
> > #include <vector>
> >+#include <fstream>
> >
> > #include <X11/Xlib.h>
> > #include <X11/extensions/XInput2.h>
> >@@ -250,7 +251,46 @@ void xorg::testing::XServer::WaitForConnections(void) {
> > throw std::runtime_error("Unable to open connection to dummy X server");
> > }
> >
> >+void xorg::testing::XServer::TestStartup(void) {
> >+ Display* test_display = XOpenDisplay(GetDisplayString());
> >+ if (test_display) {
> >+ XCloseDisplay(test_display);
> >+ std::string message;
> >+ message += "A server is already running on ";
> >+ message += GetDisplayString();
> >+ message += ".";
> >+ throw std::runtime_error(message);
> >+ }
> >+
> >+ /* The Xorg server won't start unless the log file and the old log file are
> >+ * writable. */
> >+ std::ofstream log_test;
> >+ log_test.open(d_->path_to_logfile.c_str(), std::ofstream::out);
> >+ log_test.close();
> >+ if (log_test.fail()) {
> >+ std::string message;
> >+ message += "X.org server log file ";
> >+ message += d_->path_to_logfile;
> >+ message += " is not writable.";
> >+ throw std::runtime_error(message);
> >+ }
> >+
> >+ std::string old_log_file = d_->path_to_logfile.c_str();
> >+ old_log_file += ".old";
> >+ log_test.open(old_log_file.c_str(), std::ofstream::out);
> >+ log_test.close();
> >+ if (log_test.fail()) {
> >+ std::string message;
> >+ message += "X.org old server log file ";
> >+ message += old_log_file;
> >+ message += " is not writable.";
> >+ throw std::runtime_error(message);
> >+ }
> >+
> >+}
> >+
> > void xorg::testing::XServer::Start(std::string &program) {
> >+ TestStartup();
> > Process::Start(program, program.c_str(),
> > GetDisplayString(),
> > "-logverbose", "10",
> >
>
More information about the xorg-devel
mailing list