Generate instances of types in the CMake tests.

All modules currently have a test_modules CMake test. The
new module_includes test has very similar requirements, and can
obsolete the hand-maintained test_modules tests in all modules.

After all test_modules have been removed in other repos, the
module_includes test can be renamed to that name.

The types chosen need to have a constructor which can be invoked
with no arguments. QtConcurrent has no public classes which fit
that description so it is still tested separately

Change-Id: Id7929cd32b3112c293cbf5e6964cc894a697f9b1
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
This commit is contained in:
Stephen Kelly 2012-10-29 15:46:26 +01:00 committed by The Qt Project
parent 21d74702d1
commit 03b9b423b0
5 changed files with 38 additions and 85 deletions

View File

@ -102,6 +102,7 @@ function(test_module_includes)
set(all_args ${ARGN}) set(all_args ${ARGN})
set(includes_string "") set(includes_string "")
set(instances_string "")
while(all_args) while(all_args)
list(GET all_args 0 qtmodule) list(GET all_args 0 qtmodule)
list(GET all_args 1 qtinclude) list(GET all_args 1 qtinclude)
@ -113,6 +114,10 @@ function(test_module_includes)
#include <Qt${qtmodule}> #include <Qt${qtmodule}>
#include <Qt${qtmodule}/Qt${qtmodule}>" #include <Qt${qtmodule}/Qt${qtmodule}>"
) )
set(instances_string
"${instances_string}
${qtinclude} local${qtinclude};
")
endwhile() endwhile()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/module_includes/main.cpp" file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/module_includes/main.cpp"
@ -120,7 +125,7 @@ function(test_module_includes)
${includes_string} ${includes_string}
int main(int, char **) { return 0; }\n" int main(int, char **) { ${instances_string} return 0; }\n"
) )
add_test(module_includes ${CMAKE_CTEST_COMMAND} add_test(module_includes ${CMAKE_CTEST_COMMAND}

View File

@ -74,7 +74,6 @@ if (NOT WIN32)
expect_pass(test_add_resources_delayed_file) expect_pass(test_add_resources_delayed_file)
endif() endif()
expect_pass(test_private_includes) expect_pass(test_private_includes)
expect_pass(test_modules)
expect_pass(test_testlib_definitions) expect_pass(test_testlib_definitions)
expect_pass(test_json_plugin_includes) expect_pass(test_json_plugin_includes)
@ -92,23 +91,23 @@ execute_process(COMMAND ${CMAKE_COMMAND} -E copy
set(qt_module_includes set(qt_module_includes
Core QObject Core QObject
Concurrent QtConcurrentRun
Gui QImage Gui QImage
Widgets QWidget Widgets QWidget
Network QHostInfo Network QHostInfo
OpenGL QGLContext OpenGL QGLBuffer
Sql QSqlError Sql QSqlError
Test QSignalSpy Test QTestEventList
Xml QDomDocument Xml QDomDocument
PrintSupport QPrintDialog PrintSupport QPrintDialog
) )
if (UNIX AND NOT APPLE AND NOT QNXNTO) if (UNIX AND NOT APPLE AND NOT QNXNTO)
list(APPEND qt_module_includes list(APPEND qt_module_includes
DBus QDBusConnection DBus QDBusMessage
) )
endif() endif()
test_module_includes( test_module_includes(
${qt_module_includes} ${qt_module_includes}
) )
expect_pass(test_concurrent_module)

View File

@ -0,0 +1,22 @@
cmake_minimum_required(VERSION 2.8)
project(test_concurrent_module)
find_package(Qt5Concurrent REQUIRED)
include_directories(
${Qt5Concurrent_INCLUDE_DIRS}
)
add_definitions(
${Qt5Concurrent_DEFINITIONS}
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")
add_executable(mainapp main.cpp)
target_link_libraries(mainapp
${Qt5Concurrent_LIBRARIES}
)

View File

@ -39,44 +39,15 @@
** **
****************************************************************************/ ****************************************************************************/
#include <QString> #include <QtConcurrent>
#include <qtconcurrentiteratekernel.h> #include <QtConcurrent/QtConcurrent>
#include <QImage> #include <QtConcurrent/QtConcurrentRun>
#include <QHostAddress> #include <QtConcurrentRun>
#include <QGLBuffer>
#include <QSqlQuery>
#include <QtTest>
#include <QWidget>
#include <QDomDocument>
#include <QPrintDialog>
#ifdef EXPECT_DBUS_AVAILABLE
#include <QDBusMessage>
#endif
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
QObject object; QByteArray bytearray = "hello world";
QtConcurrent::run(bytearray, &QByteArray::split, ',');
QtConcurrent::BlockSizeManager blockSizeManager(42);
QHostAddress hostAddress;
QGLBuffer glBuffer;
QSqlQuery sqlQuery;
QSignalSpy signalSpy(&object, SIGNAL(destroyed()));
QWidget widget;
QDomDocument domDocument;
QPrintDialog printDialog;
#ifdef EXPECT_DBUS_AVAILABLE
QDBusMessage dBusMessage;
#endif
return 0; return 0;
} }

View File

@ -1,44 +0,0 @@
cmake_minimum_required(VERSION 2.8)
project(test_modules)
set(qtbase_modules
Core
Concurrent
Gui
Widgets
Network
OpenGL
Sql
Test
Xml
PrintSupport
)
if (UNIX AND NOT APPLE AND NOT QNXNTO)
add_definitions(-DEXPECT_DBUS_AVAILABLE)
list(APPEND qtbase_modules DBus)
endif()
foreach(_module ${qtbase_modules})
find_package(Qt5${_module} REQUIRED)
include_directories(
${Qt5${_module}_INCLUDE_DIRS}
)
add_definitions(
${Qt5${_module}_DEFINITIONS}
)
endforeach()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Core_EXECUTABLE_COMPILE_FLAGS}")
add_executable(mainapp main.cpp)
foreach(_module ${qtbase_modules})
target_link_libraries(mainapp
${Qt5${_module}_LIBRARIES}
)
endforeach()