mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
1438f8f766
Define at least one virtual method in polymorphic class cpp files to improve link efficiency. Do so by defining a defaulted destructor or another overridden virtual method in the class cpp file. Also add explicitly defaulted copy/move constructors and assignment operators to follow the rule of five and to avoid compiler suppression of these functions due to the addition of a user-provided destructor. Where neccessary, create new cpp files and add them to CMakeLists and Testing.cmake. Set the -Wweak-vtables by default when compiling with clang to issue warnings for new classes that do not comply with this pattern. See http://llvm.org/docs/CodingStandards.html#provide-a-virtual-method-anchor-for-classes-in-headers. Fixes #6036.
62 lines
2.1 KiB
CMake
62 lines
2.1 KiB
CMake
# Copyright © 2019 by The qTox Project Contributors
|
|
#
|
|
# This file is part of qTox, a Qt-based graphical interface for Tox.
|
|
# qTox is libre software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# qTox is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with qTox. If not, see <http://www.gnu.org/licenses/>
|
|
|
|
################################################################################
|
|
#
|
|
# :: Testing
|
|
#
|
|
################################################################################
|
|
|
|
enable_testing()
|
|
|
|
function(auto_test subsystem module extra_deps)
|
|
add_executable(test_${module}
|
|
test/${subsystem}/${module}_test.cpp ${extra_deps})
|
|
target_link_libraries(test_${module}
|
|
${PROJECT_NAME}_static
|
|
${CHECK_LIBRARIES}
|
|
Qt5::Test)
|
|
add_test(
|
|
NAME test_${module}
|
|
COMMAND ${TEST_CROSSCOMPILING_EMULATOR} test_${module})
|
|
endfunction()
|
|
|
|
set(MOCK_SOURCES
|
|
test/mock/mockcoreidhandler.cpp
|
|
test/mock/mockgroupquery.cpp
|
|
)
|
|
|
|
auto_test(core core "${${PROJECT_NAME}_RESOURCES}")
|
|
auto_test(core contactid "")
|
|
auto_test(core toxid "")
|
|
auto_test(core toxstring "")
|
|
auto_test(chatlog textformatter "")
|
|
auto_test(net bsu "${${PROJECT_NAME}_RESOURCES}") # needs nodes list
|
|
auto_test(persistence paths "")
|
|
auto_test(persistence dbschema "")
|
|
auto_test(persistence offlinemsgengine "")
|
|
auto_test(persistence smileypack "${${PROJECT_NAME}_RESOURCES}") # needs emojione
|
|
auto_test(model friendmessagedispatcher "")
|
|
auto_test(model groupmessagedispatcher "${MOCK_SOURCES}")
|
|
auto_test(model messageprocessor "")
|
|
auto_test(model sessionchatlog "")
|
|
auto_test(model exiftransform "")
|
|
auto_test(model notificationgenerator "${MOCK_SOURCES}")
|
|
|
|
if (UNIX)
|
|
auto_test(platform posixsignalnotifier "")
|
|
endif()
|