[PATCH xorg-gtest v2 4/8] xserver: move starting the process into the XServer object
Chase Douglas
chase.douglas at canonical.com
Wed Jul 11 17:45:05 PDT 2012
On 07/11/2012 04:07 PM, Peter Hutterer wrote:
> On Wed, Jul 11, 2012 at 11:57:50AM -0700, Chase Douglas wrote:
>> On 07/10/2012 08:28 PM, Peter Hutterer wrote:
>>> Changes from hardcoded vararg call to requiring the caller to set up options
>>> for logfile, config, etc. beforehand. The display string is automatically
>>> added to the command line.
>>>
>>> If no binary is given by the caller, the previously set binary path is used.
>>>
>>> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
>>> ---
>>> Changes to v1:
>>> - have one Start() call only handling with/without binary
>>> - changes to accommodate for Process::Start(vector<std::string>) instead of
>>> previous const char *
>>>
>>> include/xorg/gtest/xorg-gtest-xserver.h | 8 ++++++++
>>> src/environment.cpp | 7 +------
>>> src/xserver.cpp | 19 +++++++++++++++++++
>>> 3 files changed, 28 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/include/xorg/gtest/xorg-gtest-xserver.h b/include/xorg/gtest/xorg-gtest-xserver.h
>>> index 1ba2a0f..0b7e7a0 100644
>>> --- a/include/xorg/gtest/xorg-gtest-xserver.h
>>> +++ b/include/xorg/gtest/xorg-gtest-xserver.h
>>> @@ -47,6 +47,14 @@ class XServer : public xorg::testing::Process {
>>> XServer();
>>>
>>> /**
>>> + * Start a new server. If no binary is given, the server started is the
>>> + * default compiled-in server binary.
>>> + *
>>> + * @param [in] program Path to the XServer binary
>>> + */
>>> + void Start(std::string program = std::string());
>>
>> I'm still not sure we need the program argument. I would rather we
>> stick to either setting the program path with SetServerPath(), or
>> providing it in Start() as you have here. My preference would be to
>> just drop SetServerPath(), but either approach is fine with me.
>
> I think both will be useful, for different types of tests. SetServerPath is
> good for tests where we start up the same (non-standard) server multiple
> times:
>
> setup():
> XServer s;
> s.SetServerPath("...");
>
> test():
> s.Start();
> // test bits
> s.Terminate()
>
> s.Start();
> // test bits
> s.Terminate();
>
> ...
>
> the program argument is useful for testing other DDXs:
> s.Start("Xorg");
> // test bits
> s.Terminate()
>
> s.Start("Xephyr");
> // test bits
> s.Terminate();
> ....
>
> of course, none of them is impossible with the other approach, and I don't
> actually have test cases for the second bit, though they're not far out.
> it's just a convenience API.
I wondered if this wasn't the case :). Ok, sounds alright to me.
>> If you do leave this, pass in a const reference rather than a copy
>> of the string. I see that you reuse the variable in the method, but
>> using that as a reason to copy the string in would be leaking the
>> implementation into the API.
>
> done.
>
>>> +
>>> + /**
>>> * Waits until this server is ready to take connections.
>>> */
>>> void WaitForConnections(void);
>>> diff --git a/src/environment.cpp b/src/environment.cpp
>>> index 7573b62..1521564 100644
>>> --- a/src/environment.cpp
>>> +++ b/src/environment.cpp
>>> @@ -144,12 +144,7 @@ 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",
>>> - "-logfile", d_->path_to_log_file.c_str(),
>>> - "-config", d_->path_to_conf.c_str(),
>>> - NULL);
>>> + d_->server.Start(d_->path_to_server);
>>
>> Since you use d_->path_to_server as the default in Start(), there's
>> no need to pass it in here.
>
> the environment's path_to_server may differ to the built-in default from the
> server, so we do need to pass this here.
Ok, I got it.
-- Chase
More information about the xorg-devel
mailing list