GoogleTest: Hard wire google tests

There were problems with older google test versions which were found
instead. Now the google test version is always the same and there cannot
be "strange" compile bugs.

Change-Id: Ib3dc74d1abbe369fb37a4ee5616011d8e3696c01
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Marco Bubke
2023-06-21 15:49:38 +02:00
parent aef755bc16
commit 44565bc39b
8 changed files with 44 additions and 130 deletions

2
.gitmodules vendored
View File

@@ -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

View File

@@ -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")

View File

@@ -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 "")

View File

@@ -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")

View File

@@ -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
)

View File

@@ -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

View File

@@ -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)