summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2012-08-16 16:21:52 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2012-08-17 10:19:41 +1000
commitdc852ffa3e2f76f21a42c8d9776f85fc92890e71 (patch)
treeb25340abb8a761284a65e74035d4f8dcde2c2b8e
parent8653076163c6c515f77cb3a7e4b0bc8dd416537f (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.am6
-rw-r--r--test/xserver-test.cpp62
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();
+}