diff --git a/.gitmodules b/.gitmodules index 024b61baedd..45d62de0644 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,5 +10,5 @@ path = src/libs/qlitehtml url = https://code.qt.io/playground/qlitehtml.git [submodule "googletest"] - path = tests/unit/3rdparty/googletest + path = src/libs/3rdparty/googletest url = https://github.com/google/googletest.git diff --git a/cmake/FindGoogletest.cmake b/cmake/FindGoogletest.cmake deleted file mode 100644 index 3e3c113b463..00000000000 --- a/cmake/FindGoogletest.cmake +++ /dev/null @@ -1,104 +0,0 @@ -#.rst: -# FindGoogletest -# ----------------- -# -# Try to locate the Googletest source files, and then build them as a -# static library. -# -# The ``GOOGLETEST_DIR`` (CMake or Environment) variable should be used -# to pinpoint the Googletest source files. -# -# If found, this will define the following variables: -# -# ``Googletest_FOUND`` -# True if the Googletest source package has been found. -# -# ``Googletest`` -# Target compiled as static library. -# - -find_path(GOOGLE_TEST_INCLUDE_DIR - NAMES gtest/gtest.h - PATH_SUFFIXES googletest/include - HINTS - "${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR - "${PROJECT_SOURCE_DIR}/tests/unit/3rdparty/googletest" -) - -find_path(GOOGLE_TEST_SRC_ALL - NAMES gtest-all.cc - PATH_SUFFIXES googletest/src - HINTS - "${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR - "${PROJECT_SOURCE_DIR}/tests/unit/3rdparty/googletest" -) - - -find_path(GOOGLE_MOCK_INCLUDE_DIR - NAMES gmock/gmock.h - PATH_SUFFIXES googlemock/include - HINTS - "${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR - "${PROJECT_SOURCE_DIR}/tests/unit/3rdparty/googletest" -) - -find_path(GOOGLE_MOCK_SRC_ALL - NAMES gmock-all.cc - PATH_SUFFIXES googlemock/src - HINTS - "${GOOGLETEST_DIR}" ENV GOOGLETEST_DIR - "${PROJECT_SOURCE_DIR}/tests/unit/3rdparty/googletest" -) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Googletest - DEFAULT_MSG - GOOGLE_TEST_INCLUDE_DIR GOOGLE_MOCK_INCLUDE_DIR - GOOGLE_TEST_SRC_ALL GOOGLE_MOCK_SRC_ALL -) -find_package(Threads REQUIRED) - -if(Googletest_FOUND AND NOT TARGET Googletest) - add_library(Googletest STATIC - "${GOOGLE_TEST_SRC_ALL}/gtest-all.cc" - "${GOOGLE_MOCK_SRC_ALL}/gmock-all.cc" - ) - target_include_directories(Googletest - PUBLIC - "${GOOGLE_TEST_INCLUDE_DIR}" - "${GOOGLE_MOCK_INCLUDE_DIR}" - PRIVATE - "${GOOGLE_TEST_SRC_ALL}/.." - "${GOOGLE_MOCK_SRC_ALL}/.." - ) - target_compile_definitions(Googletest - PRIVATE - GTEST_HAS_STD_INITIALIZER_LIST_ - GTEST_LANG_CXX11 - GTEST_HAS_STD_TUPLE_ - GTEST_HAS_STD_TYPE_TRAITS_ - GTEST_HAS_STD_FUNCTION_ - GTEST_HAS_RTTI - GTEST_HAS_STD_BEGIN_AND_END_ - GTEST_HAS_STD_UNIQUE_PTR_ - GTEST_HAS_EXCEPTIONS - GTEST_HAS_STREAM_REDIRECTION - GTEST_HAS_TYPED_TEST - GTEST_HAS_TYPED_TEST_P - GTEST_HAS_PARAM_TEST - GTEST_HAS_DEATH_TEST - ) - set_target_properties(Googletest PROPERTIES AUTOMOC OFF AUTOUIC OFF QT_COMPILE_OPTIONS_DISABLE_WARNINGS ON) - set_property(TARGET Googletest PROPERTY POSITION_INDEPENDENT_CODE ON) - target_compile_definitions(Googletest PUBLIC GOOGLE_TEST_IS_FOUND) - - target_link_libraries(Googletest Threads::Threads) -endif() - -mark_as_advanced(GOOGLE_TEST_INCLUDE_DIR GOOGLE_MOCK_INCLUDE_DIR - GOOGLE_TEST_SRC_ALL GOOGLE_MOCK_SRC_ALL) - -include(FeatureSummary) -set_package_properties(Googletest PROPERTIES - URL "https://github.com/google/googletest" - DESCRIPTION "Google Testing and Mocking Framework") diff --git a/tests/unit/3rdparty/googletest b/src/libs/3rdparty/googletest similarity index 100% rename from tests/unit/3rdparty/googletest rename to src/libs/3rdparty/googletest diff --git a/src/libs/CMakeLists.txt b/src/libs/CMakeLists.txt index de2d2b01ef3..73a554bae8b 100644 --- a/src/libs/CMakeLists.txt +++ b/src/libs/CMakeLists.txt @@ -22,6 +22,10 @@ if (WITH_QMLDESIGNER) add_subdirectory(qmlpuppetcommunication) endif() +if (WITH_TESTS) + add_subdirectory(googletest) +endif() + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/qlitehtml/src/CMakeLists.txt) option(BUILD_LIBRARY_QLITEHTML "Build library qlitehtml." ${BUILD_LIBRARIES_BY_DEFAULT}) set(QLITEHTML_VERSION_COMPAT ${IDE_VERSION_COMPAT} CACHE STRING "") diff --git a/src/libs/googletest/CMakeLists.txt b/src/libs/googletest/CMakeLists.txt new file mode 100644 index 00000000000..c785323056b --- /dev/null +++ b/src/libs/googletest/CMakeLists.txt @@ -0,0 +1,29 @@ +set(GOOGLETEST_DIR ${CMAKE_CURRENT_LIST_DIR}/../3rdparty/googletest) + +if (EXISTS "${GOOGLETEST_DIR}/googletest") + add_library(Googletest STATIC + "${GOOGLETEST_DIR}/googletest/src/gtest-all.cc" + "${GOOGLETEST_DIR}/googlemock/src/gmock-all.cc" + ) + target_include_directories(Googletest + PUBLIC + "${GOOGLETEST_DIR}/googletest/include" + "${GOOGLETEST_DIR}/googlemock/include" + PRIVATE + "${GOOGLETEST_DIR}/googletest" + "${GOOGLETEST_DIR}/googlemock" + ) + set_target_properties(Googletest PROPERTIES AUTOMOC OFF AUTOUIC OFF QT_COMPILE_OPTIONS_DISABLE_WARNINGS ON) + set_property(TARGET Googletest PROPERTY POSITION_INDEPENDENT_CODE ON) + + target_link_libraries(Googletest Threads::Threads) +else() + message(STATUS "Googletest was not found. Please update the submodules with `git submodule update --init --recursive`.") + message(STATUS "Otherwise tests that depend on Googletest will be skipped.") + return() +endif() + +include(FeatureSummary) +set_package_properties(Googletest PROPERTIES + URL "https://github.com/google/googletest" + DESCRIPTION "Google Testing and Mocking Framework") diff --git a/src/plugins/mcusupport/test/CMakeLists.txt b/src/plugins/mcusupport/test/CMakeLists.txt index 2df4faa891d..7d2a94c286e 100644 --- a/src/plugins/mcusupport/test/CMakeLists.txt +++ b/src/plugins/mcusupport/test/CMakeLists.txt @@ -1,13 +1,8 @@ -find_package(Googletest MODULE) - -if(TARGET Googletest) - message("Googletest target is present") - extend_qtc_plugin(McuSupport - CONDITION WITH_TESTS - DEPENDS Googletest - SOURCES - unittest.h unittest.cpp packagemock.h settingshandlermock.h - ) -else() - message("Googletest target is missing") -endif() +extend_qtc_plugin(McuSupport + CONDITION WITH_TESTS AND TARGET Googletest + DEPENDS Googletest + SOURCES + unittest.h unittest.cpp + packagemock.h + settingshandlermock.h +) diff --git a/tests/auto/qml/qmldesigner/wizard/CMakeLists.txt b/tests/auto/qml/qmldesigner/wizard/CMakeLists.txt index 9a50fab71be..c61214d404f 100644 --- a/tests/auto/qml/qmldesigner/wizard/CMakeLists.txt +++ b/tests/auto/qml/qmldesigner/wizard/CMakeLists.txt @@ -2,9 +2,8 @@ set(StudioWelcomeDir "${PROJECT_SOURCE_DIR}/src/plugins/studiowelcome") set(WITH_TESTS ON) -find_package(Googletest MODULE) - add_qtc_test(tst_qml_wizard + CONDITION TARGET Googletest DEPENDS Core Utils StudioWelcome ProjectExplorer QmlDesigner Googletest DEFINES QT_CREATOR diff --git a/tests/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt index cee69545232..9d395567961 100644 --- a/tests/unit/CMakeLists.txt +++ b/tests/unit/CMakeLists.txt @@ -1,18 +1,9 @@ -cmake_minimum_required(VERSION 3.16) - -set(GOOGLETEST_DIR ${CMAKE_CURRENT_LIST_DIR}/3rdparty/googletest) - -find_package(Googletest MODULE) find_package(GoogleBenchmark MODULE) -if (NOT Googletest_FOUND) - message(STATUS "Googletest was not found. Please update the submodules with `git submodule update --init --recursive`.") - message(STATUS "Have a look at cmake/FindGoogletest.cmake file for more details.") - message(STATUS "unit module will be skipped.") +if (NOT TARGET Googletest) return() endif() - set(CMAKE_INCLUDE_CURRENT_DIR ON) set(IMPLICIT_DEPENDS Qt::Test)