From 4a031b8ce538af0c15857c37c1964bf144d5bc38 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Fri, 21 Aug 2020 22:22:48 +0100 Subject: [PATCH 1/3] Add BARRIER_BUILD_TESTS CMake option to make tests optional --- CMakeLists.txt | 2 +- src/CMakeLists.txt | 5 ++++- src/lib/barrier/KeyMap.h | 4 ++++ src/test/unittests/barrier/KeyMapTests.cpp | 2 ++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a377c04..4947d20f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ project (barrier C CXX) option (BARRIER_BUILD_GUI "Build the GUI" ON) option (BARRIER_BUILD_INSTALLER "Build the installer" ON) +option (BARRIER_BUILD_TESTS "Build the tests" ON) set (CMAKE_EXPORT_COMPILE_COMMANDS ON) set (CMAKE_CXX_STANDARD 14) @@ -49,7 +50,6 @@ else() endif() set (libs) -include_directories (BEFORE SYSTEM ./ext/gtest/include) if (UNIX) if (NOT APPLE) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 55aad09d..c3dea51f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -19,7 +19,10 @@ include_directories (${CMAKE_CURRENT_BINARY_DIR}/lib) add_subdirectory(lib) add_subdirectory(cmd) -add_subdirectory(test) + +if (BARRIER_BUILD_TESTS) + add_subdirectory(test) +endif() if (BARRIER_BUILD_GUI) add_subdirectory(gui) diff --git a/src/lib/barrier/KeyMap.h b/src/lib/barrier/KeyMap.h index b6eb8658..812b4d26 100644 --- a/src/lib/barrier/KeyMap.h +++ b/src/lib/barrier/KeyMap.h @@ -24,7 +24,9 @@ #include "common/stdset.h" #include "common/stdvector.h" +#ifdef TEST_ENV #include +#endif namespace barrier { @@ -327,6 +329,7 @@ public: //@} private: +#ifdef TEST_ENV FRIEND_TEST(KeyMapTests, findBestKey_requiredDown_matchExactFirstItem); FRIEND_TEST(KeyMapTests, @@ -340,6 +343,7 @@ private: FRIEND_TEST(KeyMapTests, findBestKey_onlyOneRequiredDown_matchTwoRequiredChangesItem); FRIEND_TEST(KeyMapTests, findBestKey_noRequiredDown_cannotMatch); +#endif private: //! Ways to synthesize a key diff --git a/src/test/unittests/barrier/KeyMapTests.cpp b/src/test/unittests/barrier/KeyMapTests.cpp index 59806339..c0832199 100644 --- a/src/test/unittests/barrier/KeyMapTests.cpp +++ b/src/test/unittests/barrier/KeyMapTests.cpp @@ -15,6 +15,8 @@ * along with this program. If not, see . */ +#define TEST_ENV + #include "barrier/KeyMap.h" #include "test/global/gtest.h" From bd1db368b333783697d686c82c42e48c4bec8b9e Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Fri, 21 Aug 2020 23:13:58 +0100 Subject: [PATCH 2/3] Add BARRIER_USE_EXTERNAL_GTEST CMake option to use external GTest --- CMakeLists.txt | 1 + src/test/CMakeLists.txt | 38 ++++++++++++++++++++---------- src/test/integtests/CMakeLists.txt | 4 +--- src/test/unittests/CMakeLists.txt | 4 +--- 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4947d20f..18b242db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,7 @@ project (barrier C CXX) option (BARRIER_BUILD_GUI "Build the GUI" ON) option (BARRIER_BUILD_INSTALLER "Build the installer" ON) option (BARRIER_BUILD_TESTS "Build the tests" ON) +option (BARRIER_USE_EXTERNAL_GTEST "Use external installation of Google Test framework" OFF) set (CMAKE_EXPORT_COMPILE_COMMANDS ON) set (CMAKE_CXX_STANDARD 14) diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index daecb317..4a50e701 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -14,19 +14,33 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -include_directories( - ../../ext/gtest - ../../ext/gtest/include - ../../ext/gmock - ../../ext/gmock/include) - -add_library(gtest STATIC ../../ext/gtest/src/gtest-all.cc) -add_library(gmock STATIC ../../ext/gmock/src/gmock-all.cc) +if (BARRIER_USE_EXTERNAL_GTEST) + include (FindPkgConfig) + find_package(GTest REQUIRED) + pkg_check_modules(GMOCK REQUIRED gmock) + include_directories( + ${GTEST_INCLUDE_DIRS} + ${GMOCK_INCLUDE_DIRS} + ) +else() + include_directories( + ../../ext/gtest + ../../ext/gtest/include + ../../ext/gmock + ../../ext/gmock/include + ) -if (UNIX) - # ignore warnings in gtest and gmock - set_target_properties(gtest PROPERTIES COMPILE_FLAGS "-w") - set_target_properties(gmock PROPERTIES COMPILE_FLAGS "-w") + add_library(gtest STATIC ../../ext/gtest/src/gtest-all.cc) + add_library(gmock STATIC ../../ext/gmock/src/gmock-all.cc) + + set(GTEST_LIBRARIES gtest) + set(GMOCK_LIBRARIES gmock) + + if (UNIX) + # ignore warnings in gtest and gmock + set_target_properties(gtest PROPERTIES COMPILE_FLAGS "-w") + set_target_properties(gmock PROPERTIES COMPILE_FLAGS "-w") + endif() endif() add_subdirectory(integtests) diff --git a/src/test/integtests/CMakeLists.txt b/src/test/integtests/CMakeLists.txt index 0460d8df..9ef875bd 100644 --- a/src/test/integtests/CMakeLists.txt +++ b/src/test/integtests/CMakeLists.txt @@ -68,8 +68,6 @@ endif() include_directories( ../../ - ../../../ext/gtest/include - ../../../ext/gmock/include ) if (UNIX) @@ -80,4 +78,4 @@ endif() add_executable(integtests ${sources}) target_link_libraries(integtests - arch base client common io ipc mt net platform server synlib gtest gmock ${libs} ${OPENSSL_LIBS}) + arch base client common io ipc mt net platform server synlib ${GTEST_LIBRARIES} ${GMOCK_LIBRARIES} ${libs} ${OPENSSL_LIBS}) diff --git a/src/test/unittests/CMakeLists.txt b/src/test/unittests/CMakeLists.txt index c46375ce..61a0d35f 100644 --- a/src/test/unittests/CMakeLists.txt +++ b/src/test/unittests/CMakeLists.txt @@ -50,8 +50,6 @@ list(APPEND headers ${platform_sources}) include_directories( ../../ - ../../../ext/gtest/include - ../../../ext/gmock/include ../../../ext ) @@ -67,4 +65,4 @@ endif() add_executable(unittests ${sources}) target_link_libraries(unittests - arch base client server common io net platform server synlib mt ipc gtest gmock ${libs} ${OPENSSL_LIBS}) + arch base client server common io net platform server synlib mt ipc ${GTEST_LIBRARIES} ${GMOCK_LIBRARIES} ${libs} ${OPENSSL_LIBS}) From fa46480c35d00a78b7d00f8a4ebc5b5d188b3030 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Sat, 22 Aug 2020 11:46:25 +0100 Subject: [PATCH 3/3] Respect DISPLAY environment variable in XWindows tests XWindowsScreenTests was failing under Gentoo's package manager. I have also addressed this in XWindowsScreenSaverTests, which is currently unused. --- src/test/integtests/platform/XWindowsScreenSaverTests.cpp | 8 +++++++- src/test/integtests/platform/XWindowsScreenTests.cpp | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/test/integtests/platform/XWindowsScreenSaverTests.cpp b/src/test/integtests/platform/XWindowsScreenSaverTests.cpp index c6a2710c..a3af21dd 100644 --- a/src/test/integtests/platform/XWindowsScreenSaverTests.cpp +++ b/src/test/integtests/platform/XWindowsScreenSaverTests.cpp @@ -23,6 +23,7 @@ #include "platform/XWindowsScreenSaver.h" #include "test/global/gtest.h" +#include #include using ::testing::_; @@ -30,7 +31,12 @@ using ::testing::_; // TODO: not working on build machine for some reason TEST(CXWindowsScreenSaverTests, activate_defaultScreen_todo) { - Display* display = XOpenDisplay(":0.0"); + const char* displayName = std::getenv("DISPLAY"); + if (displayName == NULL) { + displayName = ":0.0"; + } + + Display* display = XOpenDisplay(displayName); Window window = DefaultRootWindow(display); MockEventQueue eventQueue; EXPECT_CALL(eventQueue, removeHandler(_, _)).Times(1); diff --git a/src/test/integtests/platform/XWindowsScreenTests.cpp b/src/test/integtests/platform/XWindowsScreenTests.cpp index d8f75e15..53f113e7 100644 --- a/src/test/integtests/platform/XWindowsScreenTests.cpp +++ b/src/test/integtests/platform/XWindowsScreenTests.cpp @@ -20,16 +20,22 @@ #include "platform/XWindowsScreen.h" #include "test/global/gtest.h" +#include using ::testing::_; TEST(CXWindowsScreenTests, fakeMouseMove_nonPrimary_getCursorPosValuesCorrect) { + const char* displayName = std::getenv("DISPLAY"); + if (displayName == NULL) { + displayName = ":0.0"; + } + MockEventQueue eventQueue; EXPECT_CALL(eventQueue, adoptHandler(_, _, _)).Times(2); EXPECT_CALL(eventQueue, adoptBuffer(_)).Times(2); EXPECT_CALL(eventQueue, removeHandler(_, _)).Times(2); - XWindowsScreen screen(new XWindowsImpl(), ":0.0", false, false, 0, &eventQueue); + XWindowsScreen screen(new XWindowsImpl(), displayName, false, false, 0, &eventQueue); screen.fakeMouseMove(10, 20);