[PATCH xorg-gtest 11/11] test: add xserver test for logfile removal

Chase Douglas chase.douglas at canonical.com
Fri Aug 17 07:55:18 PDT 2012


On 08/16/2012 04:53 PM, Peter Hutterer wrote:
> On Thu, Aug 16, 2012 at 08:47:15AM -0700, Chase Douglas wrote:
>> On 08/15/2012 11:36 PM, Peter Hutterer wrote:
>>> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
>>> ---
>>>   test/Makefile.am      |  6 ++++-
>>>   test/xserver-test.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++
>>>   2 files changed, 67 insertions(+), 1 deletion(-)
>>>   create mode 100644 test/xserver-test.cpp
>>>
>>> diff --git a/test/Makefile.am b/test/Makefile.am
>>> index 44c1027..ed6416a 100644
>>> --- a/test/Makefile.am
>>> +++ b/test/Makefile.am
>>> @@ -25,7 +25,7 @@
>>>   # SOFTWARE.
>>>   #
>>>
>>> -noinst_PROGRAMS = process-test
>>> +noinst_PROGRAMS = process-test xserver-test
>>>
>>>   AM_CPPFLAGS = $(GTEST_CPPFLAGS)
>>>   AM_CXXFLAGS = $(BASE_CXXFLAGS)
>>> @@ -41,6 +41,10 @@ process_test_SOURCES = process-test.cpp
>>>   process_test_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/include
>>>   process_test_LDADD =  $(tests_libraries)
>>>
>>> +xserver_test_SOURCES = xserver-test.cpp
>>> +xserver_test_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/include
>>> +xserver_test_LDADD =  $(tests_libraries)
>>> +
>>>   check_LIBRARIES = libgtest.a libxorg-gtest.a
>>>
>>>   # build googletest as static lib
>>> diff --git a/test/xserver-test.cpp b/test/xserver-test.cpp
>>> new file mode 100644
>>> index 0000000..ba6c462
>>> --- /dev/null
>>> +++ b/test/xserver-test.cpp
>>> @@ -0,0 +1,62 @@
>>> +#include <errno.h>
>>> +#include <unistd.h>
>>> +#include <sys/types.h>
>>> +#include <sys/wait.h>
>>> +#include <fstream>
>>> +
>>> +#include <gtest/gtest.h>
>>> +#include <xorg/gtest/xorg-gtest.h>
>>> +
>>> +using namespace xorg::testing;
>>> +
>>> +TEST(XServer, LogRemoval)
>>> +{
>>> +  SCOPED_TRACE("TESTCASE: X server startup and log file removal on success and error");
>>> +  std::string logfile = "/tmp/xorg-testing-xserver_____________.log";
>>> +
>>> +  /* make sure a previous failed test didn't leave it around */
>>> +  unlink(logfile.c_str());
>>> +
>>> +  XServer server;
>>> +  server.SetOption("-logfile", logfile);
>>> +  server.Start();
>>> +  server.Terminate(3000);
>>> +  server.RemoveLogFile();
>>> +
>>> +  std::ifstream file(logfile.c_str());
>>> +  ASSERT_FALSE(file.good());
>>> +  file.close();
>>> +
>>> +  server.SetOption("-doesnotexist", "");
>>> +  server.Start();
>>> +  while (server.GetState() == Process::RUNNING)
>>> +    usleep(5000);
>>> +
>>> +  ASSERT_EQ(server.GetState(), Process::FINISHED_FAILURE);
>>> +  file.open(logfile.c_str());
>>> +  ASSERT_FALSE(file.good()); /* server didn't leave the file behind */
>>> +
>>> +  /* now create it */
>>> +  std::ofstream f(logfile.c_str());
>>> +  file.open(logfile.c_str());
>>> +  ASSERT_TRUE(file.good());
>>> +  file.close();
>>> +
>>> +  /* must not remove it now */
>>> +  server.RemoveLogFile();
>>> +
>>> +  file.open(logfile.c_str());
>>> +  ASSERT_TRUE(file.good()); /* server didn't remove it */
>>> +  file.close();
>>> +
>>> +  server.RemoveLogFile(true);
>>> +  file.open(logfile.c_str());
>>> +  ASSERT_FALSE(file.good()); /* server did remove it */
>>> +  file.close();
>>> +}
>>> +
>>> +
>>> +int main(int argc, char *argv[]) {
>>> +  testing::InitGoogleTest(&argc, argv);
>>> +  return RUN_ALL_TESTS();
>>> +}
>>
>> I don't see why these tests shouldn't be compiled and linked into
>> one binary with the other tests in process-test.cpp. I think it will
>> make the tests easier to maintain over time. The simple way to do
>> this would be:
>
> The XServer test requires a working installation of X, the process test
> doesn't and ideally that stays that way. Playing with gtest_filter is fun
> but not that nice as just running specific binaries. I'd prefer to leave it
> as-is until we have more tests and actually see a direction, right now it's
> more of a bucket to throw tests into.

Ahh, I didn't think about that. This makes perfect sense now :).

Thanks!

-- Chase


More information about the xorg-devel mailing list