[PATCH xorg-gtest v2 2/8] xserver: store config, logfile, binary paths in the XServer object
Peter Hutterer
peter.hutterer at who-t.net
Wed Jul 11 15:48:21 PDT 2012
On Wed, Jul 11, 2012 at 11:45:59AM -0700, Chase Douglas wrote:
> On 07/10/2012 08:28 PM, Peter Hutterer wrote:
> >And provide a SetOption call for the various commandline options that the
> >server may take.
> >
> >Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> >---
> >Changes to v1:
> >- drop separate SetConfigPath(), SetLogfilePath()
> >
> > include/xorg/gtest/xorg-gtest-xserver.h | 16 ++++++++++++++++
> > src/environment.cpp | 2 ++
> > src/xserver.cpp | 27 +++++++++++++++++++++++++++
> > 3 files changed, 45 insertions(+)
> >
> >diff --git a/include/xorg/gtest/xorg-gtest-xserver.h b/include/xorg/gtest/xorg-gtest-xserver.h
> >index 56dacf6..58fdc53 100644
> >--- a/include/xorg/gtest/xorg-gtest-xserver.h
> >+++ b/include/xorg/gtest/xorg-gtest-xserver.h
> >@@ -56,6 +56,11 @@ class XServer : public xorg::testing::Process {
> > void SetDisplayNumber(unsigned int display_number);
> >
> > /**
> >+ * @param [in] path_to_server The path to the binary
> >+ */
>
> Missing method documentation.
>
> >+ void SetServerPath(std::string &path_to_server);
>
> The argument should be const.
>
> >+
> >+ /**
> > * Get the display number from this server. If the server was not
> > * started yet, this function returns the display number the server will
> > * be started on.
> >@@ -73,6 +78,17 @@ class XServer : public xorg::testing::Process {
> > const std::string& GetDisplayString(void);
> >
> > /**
> >+ * Set startup options for the server.
> >+ *
> >+ * For arguments that do not take/need a value, use the empty string as
> >+ * value.
> >+ *
> >+ * @param [in] key Commandline option
> >+ * @param [in] value Option value (if any)
> >+ */
> >+ void SetOption(std::string key, std::string value);
>
> Pass in a const reference in order to make sure we aren't
> unnecessarily copying a string just to get it into the method:
>
> void SetOption(const std::string& key, const std::string& value);
hah. the const did the trick, thanks. I had tried std::string& before but
then you can't just pass in a compile-time string, so the call to
option["-logfile"] = "foo" didn't work.
Cheers,
Peter
> >+
> >+ /**
> > * Wait for a specific device to be added to the server.
> > *
> > * @param [in] display The X display connection
> >diff --git a/src/environment.cpp b/src/environment.cpp
> >index 9a524ab..2f1c4e2 100644
> >--- a/src/environment.cpp
> >+++ b/src/environment.cpp
> >@@ -142,6 +142,8 @@ void xorg::testing::Environment::SetUp() {
> > }
> >
> > d_->server.SetDisplayNumber(d_->display);
> >+ d_->server.SetOption("-logfile", d_->path_to_log_file);
> >+ d_->server.SetOption("-config", d_->path_to_conf);
> > d_->server.Start(d_->path_to_server, d_->path_to_server.c_str(),
> > display_string,
> > "-logverbose", "10",
> >diff --git a/src/xserver.cpp b/src/xserver.cpp
> >index c24cee0..f36bd10 100644
> >--- a/src/xserver.cpp
> >+++ b/src/xserver.cpp
> >@@ -27,6 +27,7 @@
> > ******************************************************************************/
> >
> > #include "xorg/gtest/xorg-gtest-xserver.h"
> >+#include "defines.h"
> >
> > #include <sys/types.h>
> > #include <sys/wait.h>
> >@@ -40,12 +41,30 @@
> > #include <cstring>
> > #include <stdexcept>
> > #include <vector>
> >+#include <map>
> >
> > #include <X11/extensions/XInput2.h>
> >
> > struct xorg::testing::XServer::Private {
> >+ Private()
> >+ : display_number(DEFAULT_DISPLAY),
> >+ display_string(),
>
> This ^^ isn't needed. The default constructor will be called if
> unspecified, which initializes to an empty string.
>
> >+ path_to_server(DEFAULT_XORG_SERVER) {
> >+
> >+ std::string key, value;
> >+ key = std::string("-config");
> >+ value = std::string(DUMMY_CONF_PATH);
> >+ options[key] = value;
> >+
> >+ key = std::string("-logfile");
> >+ value = std::string(DEFAULT_XORG_LOGFILE);
> >+ options[key] = value;
>
> The above can be simplified down to:
>
> options["-config"] = DUMMY_CONF_PATH;
> options["-logfile"] = DEFAULT_XORG_LOGFILE;
>
> >+ }
> >+
> > unsigned int display_number;
> > std::string display_string;
> >+ std::string path_to_server;
> >+ std::map<std::string, std::string> options;
> > };
> >
> > xorg::testing::XServer::XServer() : d_(new Private) {
> >@@ -68,6 +87,10 @@ const std::string& xorg::testing::XServer::GetDisplayString(void) {
> > return d_->display_string;
> > }
> >
> >+void xorg::testing::XServer::SetServerPath(std::string &path_to_server) {
> >+ d_->path_to_server = path_to_server;
> >+}
> >+
> > bool xorg::testing::XServer::WaitForEvent(::Display *display, time_t timeout)
> > {
> > fd_set fds;
> >@@ -194,3 +217,7 @@ bool xorg::testing::XServer::WaitForDevice(::Display *display, const std::string
> >
> > return false;
> > }
> >+
> >+void xorg::testing::XServer::SetOption(std::string key, std::string value) {
> >+ d_->options[key] = value;
> >+}
> >
>
> With the above fixes:
>
> Reviewed-by: Chase Douglas <chase.douglas at canonical.com>
More information about the xorg-devel
mailing list