diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2012-08-16 16:21:52 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2012-08-17 10:19:41 +1000 |
commit | dc852ffa3e2f76f21a42c8d9776f85fc92890e71 (patch) | |
tree | b25340abb8a761284a65e74035d4f8dcde2c2b8e | |
parent | 8653076163c6c515f77cb3a7e4b0bc8dd416537f (diff) |
test: add xserver test for logfile removal
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
-rw-r--r-- | test/Makefile.am | 6 | ||||
-rw-r--r-- | test/xserver-test.cpp | 62 |
2 files changed, 67 insertions, 1 deletions
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(); +} |