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(includes_string "")
set(instances_string "")
while(all_args)
list(GET all_args 0 qtmodule)
list(GET all_args 1 qtinclude)
@ -113,6 +114,10 @@ function(test_module_includes)
#include <Qt${qtmodule}>
#include <Qt${qtmodule}/Qt${qtmodule}>"
)
set(instances_string
"${instances_string}
${qtinclude} local${qtinclude};
")
endwhile()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/module_includes/main.cpp"
@ -120,7 +125,7 @@ function(test_module_includes)
${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}

View File

@ -74,7 +74,6 @@ if (NOT WIN32)
expect_pass(test_add_resources_delayed_file)
endif()
expect_pass(test_private_includes)
expect_pass(test_modules)
expect_pass(test_testlib_definitions)
expect_pass(test_json_plugin_includes)
@ -92,23 +91,23 @@ execute_process(COMMAND ${CMAKE_COMMAND} -E copy
set(qt_module_includes
Core QObject
Concurrent QtConcurrentRun
Gui QImage
Widgets QWidget
Network QHostInfo
OpenGL QGLContext
OpenGL QGLBuffer
Sql QSqlError
Test QSignalSpy
Test QTestEventList
Xml QDomDocument
PrintSupport QPrintDialog
)
if (UNIX AND NOT APPLE AND NOT QNXNTO)
list(APPEND qt_module_includes
DBus QDBusConnection
DBus QDBusMessage
)
endif()
test_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 <qtconcurrentiteratekernel.h>
#include <QImage>
#include <QHostAddress>
#include <QGLBuffer>
#include <QSqlQuery>
#include <QtTest>
#include <QWidget>
#include <QDomDocument>
#include <QPrintDialog>
#ifdef EXPECT_DBUS_AVAILABLE
#include <QDBusMessage>
#endif
#include <QtConcurrent>
#include <QtConcurrent/QtConcurrent>
#include <QtConcurrent/QtConcurrentRun>
#include <QtConcurrentRun>
int main(int argc, char **argv)
{
QObject object;
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
QByteArray bytearray = "hello world";
QtConcurrent::run(bytearray, &QByteArray::split, ',');
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()