From b99ca80eaa15e93b6d0bda5138a5cf016f32cd04 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 30 May 2020 22:41:20 +0300 Subject: [PATCH 1/8] test: Enable building of tests --- src/CMakeLists.txt | 1 + src/test/integtests/CMakeLists.txt | 39 ++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3a8e83eb27c..55aad09d374 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -19,6 +19,7 @@ include_directories (${CMAKE_CURRENT_BINARY_DIR}/lib) add_subdirectory(lib) add_subdirectory(cmd) +add_subdirectory(test) if (BARRIER_BUILD_GUI) add_subdirectory(gui) diff --git a/src/test/integtests/CMakeLists.txt b/src/test/integtests/CMakeLists.txt index a412ecc0bf3..3b2649b96bb 100644 --- a/src/test/integtests/CMakeLists.txt +++ b/src/test/integtests/CMakeLists.txt @@ -14,24 +14,37 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -file(GLOB_RECURSE headers "*.h") -file(GLOB_RECURSE sources "*.cpp") - -# remove platform files (specific platform added later). -file(GLOB_RECURSE remove_platform "platform/*") -list(REMOVE_ITEM headers ${remove_platform}) -list(REMOVE_ITEM sources ${remove_platform}) +set(headers +) +set(sources + arch/ArchInternetTests.cpp + ipc/IpcTests.cpp + net/NetworkTests.cpp + Main.cpp +) # platform if (WIN32) - file(GLOB platform_sources "platform/MSWindows*.cpp") - file(GLOB platform_headers "platform/MSWindows*.h") + set(platform_sources + platform/MSWindowsClipboardTests.cpp + platform/MSWindowsKeyStateTests.cpp + ) + set(platform_headers) elseif (APPLE) - file(GLOB platform_sources "platform/OSX*.cpp") - file(GLOB platform_headers "platform/OSX*.h") + set(platform_sources + platform/OSXClipboardTests.cpp + platform/OSXKeyStateTests.cpp + platform/OSXScreenTests.cpp + ) + set(platform_headers) elseif (UNIX) - file(GLOB platform_sources "platform/XWindows*.cpp") - file(GLOB platform_headers "platform/XWindows*.h") + set(platform_sources + platform/XWindowsClipboardTests.cpp + platform/XWindowsKeyStateTests.cpp + platform/XWindowsScreenSaverTests.cpp + platform/XWindowsScreenTests.cpp + ) + set(platform_headers) endif() list(APPEND sources ${platform_sources}) From 56f1232352fb62592fe069c8a7317e1500885d5b Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 30 May 2020 22:41:21 +0300 Subject: [PATCH 2/8] test: Reduce the number of implicit include directories --- src/test/integtests/CMakeLists.txt | 1 - src/test/unittests/CMakeLists.txt | 1 - 2 files changed, 2 deletions(-) diff --git a/src/test/integtests/CMakeLists.txt b/src/test/integtests/CMakeLists.txt index 3b2649b96bb..8b39e7e76a3 100644 --- a/src/test/integtests/CMakeLists.txt +++ b/src/test/integtests/CMakeLists.txt @@ -68,7 +68,6 @@ endif() include_directories( ../../ - ../../lib/ ../../../ext/gtest/include ../../../ext/gmock/include ) diff --git a/src/test/unittests/CMakeLists.txt b/src/test/unittests/CMakeLists.txt index 3d21a2b8079..996c9bed665 100644 --- a/src/test/unittests/CMakeLists.txt +++ b/src/test/unittests/CMakeLists.txt @@ -50,7 +50,6 @@ list(APPEND headers ${platform_sources}) include_directories( ../../ - ../../lib/ ../../../ext/gtest/include ../../../ext/gmock/include ../../../ext From a6e5e47366bdd7b61b839287175636bdccd4e3fa Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 30 May 2020 22:41:22 +0300 Subject: [PATCH 3/8] test: Remove unresolved merge conflict markers --- .../unittests/barrier/ClipboardChunkTests.cpp | 52 ------------------- 1 file changed, 52 deletions(-) diff --git a/src/test/unittests/barrier/ClipboardChunkTests.cpp b/src/test/unittests/barrier/ClipboardChunkTests.cpp index 9dc4a5ec314..e0e37bee3c9 100644 --- a/src/test/unittests/barrier/ClipboardChunkTests.cpp +++ b/src/test/unittests/barrier/ClipboardChunkTests.cpp @@ -22,7 +22,6 @@ TEST(ClipboardChunkTests, start_formatStartChunk) { -<<<<<<< HEAD ClipboardID id = 0; UInt32 sequence = 0; String mockDataSize("10"); @@ -34,28 +33,12 @@ TEST(ClipboardChunkTests, start_formatStartChunk) EXPECT_EQ('1', chunk->m_chunk[6]); EXPECT_EQ('0', chunk->m_chunk[7]); EXPECT_EQ('\0', chunk->m_chunk[8]); -======= - ClipboardID id = 0; - UInt32 sequence = 0; - String mockDataSize("10"); - ClipboardChunk* chunk = ClipboardChunk::start(id, sequence, mockDataSize); - UInt32 temp_m_chunk; - memcpy(&temp_m_chunk, &(chunk->m_chunk[1]), 4); - - EXPECT_EQ(id, chunk->m_chunk[0]); - EXPECT_EQ(sequence, temp_m_chunk); - EXPECT_EQ(kDataStart, chunk->m_chunk[5]); - EXPECT_EQ('1', chunk->m_chunk[6]); - EXPECT_EQ('0', chunk->m_chunk[7]); - EXPECT_EQ('\0', chunk->m_chunk[8]); ->>>>>>> master delete chunk; } TEST(ClipboardChunkTests, data_formatDataChunk) { -<<<<<<< HEAD ClipboardID id = 0; UInt32 sequence = 1; String mockData("mock data"); @@ -74,35 +57,12 @@ TEST(ClipboardChunkTests, data_formatDataChunk) EXPECT_EQ('t', chunk->m_chunk[13]); EXPECT_EQ('a', chunk->m_chunk[14]); EXPECT_EQ('\0', chunk->m_chunk[15]); -======= - ClipboardID id = 0; - UInt32 sequence = 1; - String mockData("mock data"); - ClipboardChunk* chunk = ClipboardChunk::data(id, sequence, mockData); - UInt32 temp_m_chunk; - memcpy(&temp_m_chunk, &(chunk->m_chunk[1]), 4); - - EXPECT_EQ(id, chunk->m_chunk[0]); - EXPECT_EQ(sequence, temp_m_chunk); - EXPECT_EQ(kDataChunk, chunk->m_chunk[5]); - EXPECT_EQ('m', chunk->m_chunk[6]); - EXPECT_EQ('o', chunk->m_chunk[7]); - EXPECT_EQ('c', chunk->m_chunk[8]); - EXPECT_EQ('k', chunk->m_chunk[9]); - EXPECT_EQ(' ', chunk->m_chunk[10]); - EXPECT_EQ('d', chunk->m_chunk[11]); - EXPECT_EQ('a', chunk->m_chunk[12]); - EXPECT_EQ('t', chunk->m_chunk[13]); - EXPECT_EQ('a', chunk->m_chunk[14]); - EXPECT_EQ('\0', chunk->m_chunk[15]); ->>>>>>> master delete chunk; } TEST(ClipboardChunkTests, end_formatDataChunk) { -<<<<<<< HEAD ClipboardID id = 1; UInt32 sequence = 1; ClipboardChunk* chunk = ClipboardChunk::end(id, sequence); @@ -111,18 +71,6 @@ TEST(ClipboardChunkTests, end_formatDataChunk) EXPECT_EQ(sequence, (UInt32)chunk->m_chunk[1]); EXPECT_EQ(kDataEnd, chunk->m_chunk[5]); EXPECT_EQ('\0', chunk->m_chunk[6]); -======= - ClipboardID id = 1; - UInt32 sequence = 1; - ClipboardChunk* chunk = ClipboardChunk::end(id, sequence); - UInt32 temp_m_chunk; - memcpy(&temp_m_chunk, &(chunk->m_chunk[1]), 4); - - EXPECT_EQ(id, chunk->m_chunk[0]); - EXPECT_EQ(sequence, temp_m_chunk); - EXPECT_EQ(kDataEnd, chunk->m_chunk[5]); - EXPECT_EQ('\0', chunk->m_chunk[6]); ->>>>>>> master delete chunk; } From 7868043ac4f6b515788118f89ef4ea10b3489f31 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 30 May 2020 22:41:23 +0300 Subject: [PATCH 4/8] test: Fix referenced library name --- src/test/integtests/CMakeLists.txt | 2 +- src/test/unittests/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/integtests/CMakeLists.txt b/src/test/integtests/CMakeLists.txt index 8b39e7e76a3..0460d8dfbfb 100644 --- a/src/test/integtests/CMakeLists.txt +++ b/src/test/integtests/CMakeLists.txt @@ -80,4 +80,4 @@ endif() add_executable(integtests ${sources}) target_link_libraries(integtests - arch base client common io ipc mt net platform server barrier gtest gmock ${libs} ${OPENSSL_LIBS}) + arch base client common io ipc mt net platform server synlib gtest gmock ${libs} ${OPENSSL_LIBS}) diff --git a/src/test/unittests/CMakeLists.txt b/src/test/unittests/CMakeLists.txt index 996c9bed665..c46375ce6c8 100644 --- a/src/test/unittests/CMakeLists.txt +++ b/src/test/unittests/CMakeLists.txt @@ -67,4 +67,4 @@ endif() add_executable(unittests ${sources}) target_link_libraries(unittests - arch base client server common io net platform server barrier mt ipc gtest gmock ${libs} ${OPENSSL_LIBS}) + arch base client server common io net platform server synlib mt ipc gtest gmock ${libs} ${OPENSSL_LIBS}) From f23e8a6ad92d2a56f2bf7bdcadaa779b56a376c4 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 30 May 2020 22:41:24 +0300 Subject: [PATCH 5/8] test: Update to new APIs --- .../integtests/arch/ArchInternetTests.cpp | 4 +-- .../platform/XWindowsKeyStateTests.cpp | 33 +++++++------------ .../platform/XWindowsScreenTests.cpp | 5 ++- 3 files changed, 15 insertions(+), 27 deletions(-) diff --git a/src/test/integtests/arch/ArchInternetTests.cpp b/src/test/integtests/arch/ArchInternetTests.cpp index 722df2f3bc4..7a79a261765 100644 --- a/src/test/integtests/arch/ArchInternetTests.cpp +++ b/src/test/integtests/arch/ArchInternetTests.cpp @@ -25,13 +25,13 @@ TEST(ArchInternetTests, get) { ARCH_INTERNET internet; - String result = internet.get(TEST_URL); + std::string result = internet.get(TEST_URL); ASSERT_EQ("Hello world!", result); } TEST(ArchInternetTests, urlEncode) { ARCH_INTERNET internet; - String result = internet.urlEncode("hello=+&world"); + std::string result = internet.urlEncode("hello=+&world"); ASSERT_EQ("hello%3D%2B%26world", result); } diff --git a/src/test/integtests/platform/XWindowsKeyStateTests.cpp b/src/test/integtests/platform/XWindowsKeyStateTests.cpp index ea8ce441a11..00c0127383a 100644 --- a/src/test/integtests/platform/XWindowsKeyStateTests.cpp +++ b/src/test/integtests/platform/XWindowsKeyStateTests.cpp @@ -76,8 +76,7 @@ TEST_F(XWindowsKeyStateTests, setActiveGroup_pollAndSet_groupIsZero) { MockKeyMap keyMap; MockEventQueue eventQueue; - XWindowsKeyState keyState( - m_display, true, &eventQueue, keyMap); + XWindowsKeyState keyState(new XWindowsImpl(), m_display, true, &eventQueue, keyMap); keyState.setActiveGroup(XWindowsKeyState::kGroupPollAndSet); @@ -88,8 +87,7 @@ TEST_F(XWindowsKeyStateTests, setActiveGroup_poll_groupIsNotSet) { MockKeyMap keyMap; MockEventQueue eventQueue; - XWindowsKeyState keyState( - m_display, true, &eventQueue, keyMap); + XWindowsKeyState keyState(new XWindowsImpl(), m_display, true, &eventQueue, keyMap); keyState.setActiveGroup(XWindowsKeyState::kGroupPoll); @@ -100,8 +98,7 @@ TEST_F(XWindowsKeyStateTests, setActiveGroup_customGroup_groupWasSet) { MockKeyMap keyMap; MockEventQueue eventQueue; - XWindowsKeyState keyState( - m_display, true, &eventQueue, keyMap); + XWindowsKeyState keyState(new XWindowsImpl(), m_display, true, &eventQueue, keyMap); keyState.setActiveGroup(1); @@ -112,8 +109,7 @@ TEST_F(XWindowsKeyStateTests, mapModifiersFromX_zeroState_zeroMask) { MockKeyMap keyMap; MockEventQueue eventQueue; - XWindowsKeyState keyState( - m_display, true, &eventQueue, keyMap); + XWindowsKeyState keyState(new XWindowsImpl(), m_display, true, &eventQueue, keyMap); int mask = keyState.mapModifiersFromX(0); @@ -124,8 +120,7 @@ TEST_F(XWindowsKeyStateTests, mapModifiersToX_zeroMask_resultIsTrue) { MockKeyMap keyMap; MockEventQueue eventQueue; - XWindowsKeyState keyState( - m_display, true, &eventQueue, keyMap); + XWindowsKeyState keyState(new XWindowsImpl(), m_display, true, &eventQueue, keyMap); unsigned int modifiers = 0; bool result = keyState.mapModifiersToX(0, modifiers); @@ -137,8 +132,7 @@ TEST_F(XWindowsKeyStateTests, fakeCtrlAltDel_default_returnsFalse) { MockKeyMap keyMap; MockEventQueue eventQueue; - XWindowsKeyState keyState( - m_display, true, &eventQueue, keyMap); + XWindowsKeyState keyState(new XWindowsImpl(), m_display, true, &eventQueue, keyMap); bool result = keyState.fakeCtrlAltDel(); @@ -149,8 +143,7 @@ TEST_F(XWindowsKeyStateTests, pollActiveModifiers_defaultState_returnsZero) { MockKeyMap keyMap; MockEventQueue eventQueue; - XWindowsKeyState keyState( - m_display, true, &eventQueue, keyMap); + XWindowsKeyState keyState(new XWindowsImpl(), m_display, true, &eventQueue, keyMap); KeyModifierMask actual = keyState.pollActiveModifiers(); @@ -162,8 +155,7 @@ TEST_F(XWindowsKeyStateTests, pollActiveModifiers_shiftKeyDownThenUp_masksAreCor { MockKeyMap keyMap; MockEventQueue eventQueue; - XWindowsKeyState keyState( - m_display, true, &eventQueue, keyMap); + XWindowsKeyState keyState(new XWindowsImpl(), m_display, true, &eventQueue, keyMap); // set mock modifier mapping std::fill(keyState.modifierFromX().begin(), keyState.modifierFromX().end(), 0); @@ -195,8 +187,7 @@ TEST_F(XWindowsKeyStateTests, pollActiveGroup_defaultState_returnsZero) { MockKeyMap keyMap; MockEventQueue eventQueue; - XWindowsKeyState keyState( - m_display, true, &eventQueue, keyMap); + XWindowsKeyState keyState(new XWindowsImpl(), m_display, true, &eventQueue, keyMap); SInt32 actual = keyState.pollActiveGroup(); @@ -207,8 +198,7 @@ TEST_F(XWindowsKeyStateTests, pollActiveGroup_positiveGroup_returnsGroup) { MockKeyMap keyMap; MockEventQueue eventQueue; - XWindowsKeyState keyState( - m_display, true, &eventQueue, keyMap); + XWindowsKeyState keyState(new XWindowsImpl(), m_display, true, &eventQueue, keyMap); keyState.group(3); @@ -222,8 +212,7 @@ TEST_F(XWindowsKeyStateTests, pollActiveGroup_xkb_areEqual) #if HAVE_XKB_EXTENSION MockKeyMap keyMap; MockEventQueue eventQueue; - XWindowsKeyState keyState( - m_display, true, &eventQueue, keyMap); + XWindowsKeyState keyState(new XWindowsImpl(), m_display, true, &eventQueue, keyMap); // reset the group keyState.group(-1); diff --git a/src/test/integtests/platform/XWindowsScreenTests.cpp b/src/test/integtests/platform/XWindowsScreenTests.cpp index b74599c9ceb..d8f75e15f00 100644 --- a/src/test/integtests/platform/XWindowsScreenTests.cpp +++ b/src/test/integtests/platform/XWindowsScreenTests.cpp @@ -29,12 +29,11 @@ TEST(CXWindowsScreenTests, fakeMouseMove_nonPrimary_getCursorPosValuesCorrect) EXPECT_CALL(eventQueue, adoptHandler(_, _, _)).Times(2); EXPECT_CALL(eventQueue, adoptBuffer(_)).Times(2); EXPECT_CALL(eventQueue, removeHandler(_, _)).Times(2); - XWindowsScreen screen( - ":0.0", false, false, 0, &eventQueue); + XWindowsScreen screen(new XWindowsImpl(), ":0.0", false, false, 0, &eventQueue); screen.fakeMouseMove(10, 20); - int x, y; + SInt32 x, y; screen.getCursorPos(x, y); ASSERT_EQ(10, x); ASSERT_EQ(20, y); From 13a0359c58f28789c76b633c463b837c0bb7fc92 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 30 May 2020 22:41:25 +0300 Subject: [PATCH 6/8] tests: Fix crash in XWindowsKeyStateTests --- src/lib/platform/XWindowsKeyState.h | 2 +- src/test/integtests/platform/XWindowsKeyStateTests.cpp | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/lib/platform/XWindowsKeyState.h b/src/lib/platform/XWindowsKeyState.h index f42f7ac9635..f790390010d 100644 --- a/src/lib/platform/XWindowsKeyState.h +++ b/src/lib/platform/XWindowsKeyState.h @@ -173,6 +173,6 @@ class XWindowsKeyState : public KeyState { public: SInt32 group() const { return m_group; } void group(const SInt32& group) { m_group = group; } - KeyModifierMaskList modifierFromX() const { return m_modifierFromX; } + KeyModifierMaskList& modifierFromX() { return m_modifierFromX; } #endif }; diff --git a/src/test/integtests/platform/XWindowsKeyStateTests.cpp b/src/test/integtests/platform/XWindowsKeyStateTests.cpp index 00c0127383a..9f6716d5fb3 100644 --- a/src/test/integtests/platform/XWindowsKeyStateTests.cpp +++ b/src/test/integtests/platform/XWindowsKeyStateTests.cpp @@ -150,7 +150,6 @@ TEST_F(XWindowsKeyStateTests, pollActiveModifiers_defaultState_returnsZero) ASSERT_EQ(0, actual); } -#if 0 // TODO: fix, causes sigsegv TEST_F(XWindowsKeyStateTests, pollActiveModifiers_shiftKeyDownThenUp_masksAreCorrect) { MockKeyMap keyMap; @@ -181,7 +180,6 @@ TEST_F(XWindowsKeyStateTests, pollActiveModifiers_shiftKeyDownThenUp_masksAreCor EXPECT_TRUE((modUp & KeyModifierShift) == 0) << "shift key still in mask - make sure no keys are being held down"; } -#endif TEST_F(XWindowsKeyStateTests, pollActiveGroup_defaultState_returnsZero) { From 460f5df8380e35989dbd64376fecf9c14a2ea2b0 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 30 May 2020 22:41:26 +0300 Subject: [PATCH 7/8] test: Fix undefined behavior of deleting incomplete type --- src/test/global/TestEventQueue.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/global/TestEventQueue.h b/src/test/global/TestEventQueue.h index a6cf0caa1e0..b93250810a5 100644 --- a/src/test/global/TestEventQueue.h +++ b/src/test/global/TestEventQueue.h @@ -19,7 +19,7 @@ #include "base/EventQueue.h" -class EventQueueTimer; +class EventQueueTimer {}; class TestEventQueue : public EventQueue { public: From 64265e926f1b3da9ac915bea5cad05e352707874 Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sat, 30 May 2020 22:41:27 +0300 Subject: [PATCH 8/8] tests: Disable test that depends on external state --- src/test/integtests/arch/ArchInternetTests.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/integtests/arch/ArchInternetTests.cpp b/src/test/integtests/arch/ArchInternetTests.cpp index 7a79a261765..a384c6495c7 100644 --- a/src/test/integtests/arch/ArchInternetTests.cpp +++ b/src/test/integtests/arch/ArchInternetTests.cpp @@ -22,7 +22,7 @@ #define TEST_URL "https://symless.com/tests/?testString" //#define TEST_URL "http://localhost/barrier/tests/?testString" -TEST(ArchInternetTests, get) +TEST(ArchInternetTests, DISABLED_get) { ARCH_INTERNET internet; std::string result = internet.get(TEST_URL);