Always build E2E tests, but only add to test suite if enabled
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Thu, 10 Nov 2022 13:05:55 +0000 (14:05 +0100)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Wed, 23 Nov 2022 07:40:46 +0000 (08:40 +0100)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
.drone.yml
test/CMakeLists.txt
test/nextcloud_add_test.cmake

index 7dfc88c02f9cb70b769b331bb246f1f1444a5fcb..ac25d7f6611cca24c763d78c386f923cc6317394 100644 (file)
@@ -9,7 +9,7 @@ steps:
       path: /drone/build
   commands:
     - cd /drone/build
-    - cmake -G Ninja -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_BUILD_TYPE=Debug -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DBUILD_E2E_TESTS=ON -DECM_ENABLE_SANITIZERS=address -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 ../src
+    - cmake -G Ninja -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -DCMAKE_BUILD_TYPE=Debug -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DADD_E2E_TESTS=ON -DECM_ENABLE_SANITIZERS=address -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 ../src
 
 - name: compile
   image: ghcr.io/nextcloud/continuous-integration-client:client-5.15-11
@@ -79,7 +79,7 @@ steps:
       path: /drone/build
   commands:
     - cd /drone/build
-    - cmake -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_BUILD_TYPE=Debug -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DBUILD_E2E_TESTS=ON -DECM_ENABLE_SANITIZERS=address -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 ../src
+    - cmake -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_C_COMPILER=clang-14 -DCMAKE_CXX_COMPILER=clang++-14 -DCMAKE_BUILD_TYPE=Debug -DQUICK_COMPILER=ON -DBUILD_UPDATER=ON -DBUILD_TESTING=1 -DADD_E2E_TESTS=ON -DECM_ENABLE_SANITIZERS=address -DCMAKE_CXX_FLAGS=-Werror -DOPENSSL_ROOT_DIR=/usr/local/lib64 ../src
 - name: compile
   image: ghcr.io/nextcloud/continuous-integration-client:client-5.15-11
   volumes:
index d37e0a26d8f19ea2ed88d35eb741b5f7ca2bc610..972f40d6da314ba16ed20ccff4f7377a08f5b015 100644 (file)
@@ -70,9 +70,12 @@ nextcloud_add_test(ShareModel)
 nextcloud_add_test(ShareeModel)
 nextcloud_add_test(SortedShareModel)
 
-if(BUILD_E2E_TESTS)
+if(ADD_E2E_TESTS)
     nextcloud_add_test(E2eServerSetup)
     nextcloud_add_test(E2eFileTransfer)
+else()
+    nextcloud_build_test(E2eServerSetup)
+    nextcloud_build_test(E2eFileTransfer)
 endif()
 
 if( UNIX AND NOT APPLE )
index 98f3ef7673cdd740d96dd2b42528d360ae9a5890..6bbcdf30f605983cc9bf85afc48ff3be217d89ab 100644 (file)
@@ -1,5 +1,42 @@
 find_package(Qt5 COMPONENTS Core Test Xml Network Qml Quick REQUIRED)
 
+macro(nextcloud_build_test test_class)
+    set(CMAKE_AUTOMOC TRUE)
+    set(OWNCLOUD_TEST_CLASS ${test_class})
+    string(TOLOWER "${OWNCLOUD_TEST_CLASS}" OWNCLOUD_TEST_CLASS_LOWERCASE)
+
+    add_executable(${OWNCLOUD_TEST_CLASS}Test test${OWNCLOUD_TEST_CLASS_LOWERCASE}.cpp)
+    set_target_properties(${OWNCLOUD_TEST_CLASS}Test PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY})
+
+    target_link_libraries(${OWNCLOUD_TEST_CLASS}Test PRIVATE
+      Nextcloud::sync
+      testutils
+      nextcloudCore
+      cmdCore
+      Qt5::Test
+      Qt5::Quick
+    )
+
+    if (WIN32)
+        target_link_libraries(${OWNCLOUD_TEST_CLASS}Test PRIVATE nextcloudsync_vfs_cfapi)
+    elseif (LINUX)
+        target_link_libraries(${OWNCLOUD_TEST_CLASS}Test PRIVATE nextcloudsync_vfs_xattr)
+    endif()
+
+    IF(BUILD_UPDATER)
+        target_link_libraries(${OWNCLOUD_TEST_CLASS}Test PRIVATE updater)
+    endif()
+
+    add_definitions(-DOWNCLOUD_TEST)
+    add_definitions(-DOWNCLOUD_BIN_PATH="${CMAKE_BINARY_DIR}/bin")
+
+    target_include_directories(${OWNCLOUD_TEST_CLASS}Test PRIVATE
+        "${CMAKE_SOURCE_DIR}/test/"
+        ${CMAKE_SOURCE_DIR}/src/3rdparty/qtokenizer
+    )
+    set_target_properties(${OWNCLOUD_TEST_CLASS}Test PROPERTIES FOLDER Tests)
+endmacro()
+
 macro(nextcloud_add_test test_class)
     set(CMAKE_AUTOMOC TRUE)
     set(OWNCLOUD_TEST_CLASS ${test_class})