forked from qt-creator/qt-creator
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:
2
.gitmodules
vendored
2
.gitmodules
vendored
@@ -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
|
||||
|
||||
@@ -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")
|
||||
@@ -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 "")
|
||||
|
||||
29
src/libs/googletest/CMakeLists.txt
Normal file
29
src/libs/googletest/CMakeLists.txt
Normal 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")
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user