summaryrefslogtreecommitdiffstats
path: root/src/testlib
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2019-06-03 15:26:34 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2019-06-03 15:51:20 +0200
commit5591e821358b9111c79336a66eac4d04bb5811ba (patch)
tree4b4c1da4f5ccaead1cf4f487622de1d0b242b0b9 /src/testlib
parente4079eca49adce16e31dac2a18d49d7a55817891 (diff)
parentca0c9f82cbf7c8c37acdcbdfdc3fa0c5fc138059 (diff)
Merge remote-tracking branch 'origin/dev' into wip/cmake
Diffstat (limited to 'src/testlib')
-rw-r--r--src/testlib/.prev_CMakeLists.txt141
-rw-r--r--src/testlib/CMakeLists.txt70
-rw-r--r--src/testlib/configure.cmake5
-rw-r--r--src/testlib/configure.json6
-rw-r--r--src/testlib/qbenchmark.cpp2
-rw-r--r--src/testlib/qbenchmark_p.h8
-rw-r--r--src/testlib/qbenchmarkvalgrind.cpp4
-rw-r--r--src/testlib/qbenchmarkvalgrind_p.h2
-rw-r--r--src/testlib/qtestcase.cpp12
-rw-r--r--src/testlib/testlib.pro9
10 files changed, 210 insertions, 49 deletions
diff --git a/src/testlib/.prev_CMakeLists.txt b/src/testlib/.prev_CMakeLists.txt
new file mode 100644
index 0000000000..aef2ceefd0
--- /dev/null
+++ b/src/testlib/.prev_CMakeLists.txt
@@ -0,0 +1,141 @@
+# Generated from testlib.pro.
+
+#####################################################################
+## Test Module:
+#####################################################################
+
+add_qt_module(Test
+ QMAKE_MODULE_CONFIG console testlib_defines
+ SOURCES
+ qabstracttestlogger.cpp qabstracttestlogger_p.h
+ qasciikey.cpp
+ qbenchmark.cpp qbenchmark.h qbenchmark_p.h
+ qbenchmarkevent.cpp qbenchmarkevent_p.h
+ qbenchmarkmeasurement.cpp qbenchmarkmeasurement_p.h
+ qbenchmarkmetric.cpp qbenchmarkmetric.h qbenchmarkmetric_p.h
+ qbenchmarkperfevents.cpp qbenchmarkperfevents_p.h
+ qbenchmarktimemeasurers_p.h
+ qcsvbenchmarklogger.cpp qcsvbenchmarklogger_p.h
+ qplaintestlogger.cpp qplaintestlogger_p.h
+ qsignaldumper.cpp qsignaldumper_p.h
+ qsignalspy.h
+ qtaptestlogger.cpp qtaptestlogger_p.h
+ qteamcitylogger.cpp qteamcitylogger_p.h
+ qtest.h
+ qtest_gui.h
+ qtest_network.h
+ qtest_widgets.h
+ qtestaccessible.h
+ qtestassert.h
+ qtestblacklist.cpp qtestblacklist_p.h
+ qtestcase.cpp qtestcase.h
+ qtestcoreelement_p.h
+ qtestcorelist_p.h
+ qtestdata.cpp qtestdata.h
+ qtestelement.cpp qtestelement_p.h
+ qtestelementattribute.cpp qtestelementattribute_p.h
+ qtestevent.h
+ qtesteventloop.h
+ qtesthelpers_p.h
+ qtestkeyboard.h
+ qtestlog.cpp qtestlog_p.h
+ qtestmouse.cpp qtestmouse.h
+ qtestresult.cpp qtestresult_p.h
+ qtestspontaneevent.h
+ qtestsystem.h
+ qtesttable.cpp qtesttable_p.h
+ qtesttouch.h
+ qtestxunitstreamer.cpp qtestxunitstreamer_p.h
+ qttestglobal.h
+ qxmltestlogger.cpp qxmltestlogger_p.h
+ qxunittestlogger.cpp qxunittestlogger_p.h
+ DEFINES
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_TO_ASCII
+ QT_NO_DATASTREAM
+ QT_NO_FOREACH
+ LIBRARIES
+ Qt::CorePrivate
+ PUBLIC_LIBRARIES
+ Qt::Core
+ COMPILE_OPTIONS
+ --cs-exclude-file-abs-wildcard=$$QT_SOURCE_TREE/*
+ --cs-include-file-abs-wildcard=*/src/testlib/*
+ --cs-mcc
+ --cs-mcdc
+ LINK_OPTIONS
+ "$$COVERAGE_OPTIONS"
+)
+
+#### Keys ignored in scope 1:.:.:testlib.pro:<TRUE>:
+# CONFIG = "exceptions"
+# MODULE_CONFIG = "console" "testlib_defines"
+# _LOADED = "qt_module"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 2:.:.:testlib.pro:UNIX AND NOT embedded:
+# QMAKE_PKGCONFIG_DESCRIPTION = "Qt" "Unit" "Testing" "Library"
+
+extend_target(Test CONDITION QT_FEATURE_itemmodeltester
+ SOURCES
+ qabstractitemmodeltester.cpp qabstractitemmodeltester.h
+)
+
+extend_target(Test CONDITION QT_FEATURE_valgrind
+ SOURCES
+ qbenchmarkvalgrind.cpp qbenchmarkvalgrind_p.h
+)
+
+extend_target(Test CONDITION embedded
+ COMPILE_OPTIONS
+ -fno-rtti
+)
+
+extend_target(Test CONDITION APPLE_OSX
+ SOURCES
+ qappletestlogger.cpp qappletestlogger_p.h
+ qtestutil_macos.mm qtestutil_macos_p.h
+ PUBLIC_LIBRARIES
+ ${FWApplicationServices}
+ ${FWFoundation}
+ ${FWIOKit}
+ ${FWSecurity}
+)
+
+extend_target(Test CONDITION (APPLE_OSX) AND (OFF AND NOT lessThan(QMAKE_XCODE_VERSION, "6.0"))
+ SOURCES
+ qxctestlogger.mm qxctestlogger_p.h
+ DEFINES
+ HAVE_XCTEST
+ PUBLIC_LIBRARIES
+ ${FWFoundation}
+)
+
+#### Keys ignored in scope 8:.:.:testlib.pro:OFF AND NOT lessThan(QMAKE_XCODE_VERSION, "6.0"):
+# _LOADED = "sdk"
+
+extend_target(Test CONDITION ((APPLE_OSX) AND (OFF AND NOT lessThan(QMAKE_XCODE_VERSION, "6.0"))) AND (NOT QMAKE_MAC_SDK_PLATFORM_PATH_ISEMPTY)
+ COMPILE_OPTIONS
+ -F/Developer/Library/Frameworks
+ LINK_OPTIONS
+ "-F$${platform_dev_frameworks_path}"
+ "-weak_framework"
+ "XCTest"
+)
+
+#### Keys ignored in scope 9:.:.:testlib.pro:NOT QMAKE_MAC_SDK_PLATFORM_PATH_ISEMPTY:
+# MODULE_CONFIG = "xctest"
+
+#### Keys ignored in scope 10:.:.:testlib.pro:NOT TARGET Qt::Gui:
+# HEADERSCLEAN_EXCLUDE = "qtest_gui.h" "qtestaccessible.h" "qtestkeyboard.h" "qtestmouse.h" "qtesttouch.h"
+
+#### Keys ignored in scope 11:.:.:testlib.pro:NOT TARGET Qt::Widgets:
+# HEADERSCLEAN_EXCLUDE = "qtest_widgets.h"
+
+#### Keys ignored in scope 12:.:.:testlib.pro:NOT TARGET Qt::Network:
+# HEADERSCLEAN_EXCLUDE = "qtest_network.h"
+add_qt_docs(
+ doc/qttestlib.qdocconf
+)
diff --git a/src/testlib/CMakeLists.txt b/src/testlib/CMakeLists.txt
index 509748e51e..92864a9e01 100644
--- a/src/testlib/CMakeLists.txt
+++ b/src/testlib/CMakeLists.txt
@@ -7,7 +7,7 @@
add_qt_module(Test
CONFIG_MODULE_NAME testlib # special case
SOURCES
- qabstracttestlogger.cpp
+ qabstracttestlogger.cpp qabstracttestlogger_p.h
qasciikey.cpp
qbenchmark.cpp qbenchmark.h qbenchmark_p.h
qbenchmarkevent.cpp qbenchmarkevent_p.h
@@ -15,13 +15,12 @@ add_qt_module(Test
qbenchmarkmetric.cpp qbenchmarkmetric.h qbenchmarkmetric_p.h
qbenchmarkperfevents.cpp qbenchmarkperfevents_p.h
qbenchmarktimemeasurers_p.h
- qbenchmarkvalgrind.cpp qbenchmarkvalgrind_p.h
- qcsvbenchmarklogger.cpp
- qplaintestlogger.cpp
- qsignaldumper.cpp
+ qcsvbenchmarklogger.cpp qcsvbenchmarklogger_p.h
+ qplaintestlogger.cpp qplaintestlogger_p.h
+ qsignaldumper.cpp qsignaldumper_p.h
qsignalspy.h
qtaptestlogger.cpp qtaptestlogger_p.h
- qteamcitylogger.cpp
+ qteamcitylogger.cpp qteamcitylogger_p.h
qtest.h
qtest_gui.h
qtest_network.h
@@ -30,37 +29,43 @@ add_qt_module(Test
qtestassert.h
qtestblacklist.cpp qtestblacklist_p.h
qtestcase.cpp qtestcase.h
+ qtestcoreelement_p.h
+ qtestcorelist_p.h
qtestdata.cpp qtestdata.h
- qtestelement.cpp
- qtestelementattribute.cpp
+ qtestelement.cpp qtestelement_p.h
+ qtestelementattribute.cpp qtestelementattribute_p.h
qtestevent.h
qtesteventloop.h
qtesthelpers_p.h
qtestkeyboard.h
- qtestlog.cpp
+ qtestlog.cpp qtestlog_p.h
qtestmouse.cpp qtestmouse.h
- qtestresult.cpp
+ qtestresult.cpp qtestresult_p.h
qtestspontaneevent.h
qtestsystem.h
- qtesttable.cpp
+ qtesttable.cpp qtesttable_p.h
qtesttouch.h
- qtestxunitstreamer.cpp
+ qtestxunitstreamer.cpp qtestxunitstreamer_p.h
qttestglobal.h
- qxmltestlogger.cpp
- qxunittestlogger.cpp
+ qxmltestlogger.cpp qxmltestlogger_p.h
+ qxunittestlogger.cpp qxunittestlogger_p.h
DEFINES
- QT_NO_CAST_TO_ASCII
QT_NO_CAST_FROM_ASCII
- QT_NO_FOREACH
+ QT_NO_CAST_TO_ASCII
QT_NO_DATASTREAM
+ QT_NO_FOREACH
QT_BUILD_TESTLIB_LIB # special case
LIBRARIES
Qt::CorePrivate
- PUBLIC_LIBRARIES # special case
+ PUBLIC_LIBRARIES
Qt::Core
+ # special case begin
+ # remove COMPILE_OPTIONS, LINK_OPTIONS, COVERAGE_OPTIONS
+ # figure out how it should be handled.
+ # special case end
)
-#### Keys ignored in scope 1:.:testlib.pro:<NONE>:
+#### Keys ignored in scope 1:.:.:testlib.pro:<TRUE>:
# CONFIG = "exceptions"
# MODULE_CONFIG = "console" "testlib_defines"
# _LOADED = "qt_module"
@@ -68,7 +73,7 @@ add_qt_module(Test
## Scopes:
#####################################################################
-#### Keys ignored in scope 2:.:testlib.pro:UNIX AND NOT embedded:
+#### Keys ignored in scope 2:.:.:testlib.pro:UNIX AND NOT embedded:
# QMAKE_PKGCONFIG_DESCRIPTION = "Qt" "Unit" "Testing" "Library"
extend_target(Test CONDITION QT_FEATURE_itemmodeltester
@@ -76,37 +81,44 @@ extend_target(Test CONDITION QT_FEATURE_itemmodeltester
qabstractitemmodeltester.cpp qabstractitemmodeltester.h
)
+extend_target(Test CONDITION QT_FEATURE_valgrind
+ SOURCES
+ qbenchmarkvalgrind.cpp qbenchmarkvalgrind_p.h
+)
+
extend_target(Test CONDITION embedded
COMPILE_OPTIONS
- "-fno-rtti"
+ -fno-rtti
)
extend_target(Test CONDITION APPLE_OSX
SOURCES
qappletestlogger.cpp qappletestlogger_p.h
qtestutil_macos.mm qtestutil_macos_p.h
- LIBRARIES
+ PUBLIC_LIBRARIES
${FWApplicationServices}
${FWFoundation}
${FWIOKit}
${FWSecurity}
)
-# special case: Do not bother with disabld stuff:
+# special case begin
+# Do not bother with disabled stuff:
# extend_target(Test CONDITION (APPLE_OSX) AND (OFF AND NOT lessThan(QMAKE_XCODE_VERSION, "6.0")) ...
# extend_target(Test CONDITION ((APPLE_OSX) AND (OFF AND NOT lessThan(QMAKE_XCODE_VERSION, "6.0"))) AND (NOT QMAKE_MAC_SDK_PLATFORM_PATH_ISEMPTY) ...
+# special case end
-#### Keys ignored in scope 8:.:testlib.pro:NOT QMAKE_MAC_SDK_PLATFORM_PATH_ISEMPTY:
+#### Keys ignored in scope 9:.:.:testlib.pro:NOT QMAKE_MAC_SDK_PLATFORM_PATH_ISEMPTY:
# MODULE_CONFIG = "xctest"
-# platform_dev_frameworks_path = "$${QMAKE_MAC_SDK_PLATFORM_PATH}/Developer/Library/Frameworks"
-#### Keys ignored in scope 9:.:testlib.pro:NOT TARGET Qt::Gui:
+#### Keys ignored in scope 10:.:.:testlib.pro:NOT TARGET Qt::Gui:
# HEADERSCLEAN_EXCLUDE = "qtest_gui.h" "qtestaccessible.h" "qtestkeyboard.h" "qtestmouse.h" "qtesttouch.h"
-#### Keys ignored in scope 10:.:testlib.pro:NOT TARGET Qt::Widgets:
+#### Keys ignored in scope 11:.:.:testlib.pro:NOT TARGET Qt::Widgets:
# HEADERSCLEAN_EXCLUDE = "qtest_widgets.h"
-#### Keys ignored in scope 11:.:testlib.pro:NOT TARGET Qt::Network:
+#### Keys ignored in scope 12:.:.:testlib.pro:NOT TARGET Qt::Network:
# HEADERSCLEAN_EXCLUDE = "qtest_network.h"
-
-add_qt_docs(./doc/qttestlib.qdocconf)
+add_qt_docs(
+ doc/qttestlib.qdocconf
+)
diff --git a/src/testlib/configure.cmake b/src/testlib/configure.cmake
index 74d32e9dfc..b02487223c 100644
--- a/src/testlib/configure.cmake
+++ b/src/testlib/configure.cmake
@@ -24,3 +24,8 @@ qt_feature("itemmodeltester" PUBLIC
PURPOSE "Provides a utility to test item models."
CONDITION QT_FEATURE_itemmodel
)
+qt_feature("valgrind" PUBLIC
+ LABEL "Valgrind"
+ PURPOSE "Profiling support with callgrind."
+ CONDITION ( LINUX OR APPLE ) AND QT_FEATURE_process AND QT_FEATURE_regularexpression
+)
diff --git a/src/testlib/configure.json b/src/testlib/configure.json
index df6132cdc2..726f614ee5 100644
--- a/src/testlib/configure.json
+++ b/src/testlib/configure.json
@@ -16,6 +16,12 @@
"purpose": "Provides a utility to test item models.",
"condition": "features.itemmodel",
"output": [ "publicFeature" ]
+ },
+ "valgrind": {
+ "label": "Valgrind",
+ "purpose": "Profiling support with callgrind.",
+ "condition": "(config.linux || config.darwin) && features.process && features.regularexpression",
+ "output": [ "publicFeature" ]
}
},
diff --git a/src/testlib/qbenchmark.cpp b/src/testlib/qbenchmark.cpp
index d49d07bb70..8d5543a0fc 100644
--- a/src/testlib/qbenchmark.cpp
+++ b/src/testlib/qbenchmark.cpp
@@ -82,7 +82,7 @@ QBenchmarkMeasurerBase * QBenchmarkGlobalData::createMeasurer()
{
QBenchmarkMeasurerBase *measurer = 0;
if (0) {
-#ifdef QTESTLIB_USE_VALGRIND
+#if QT_CONFIG(valgrind)
} else if (mode_ == CallgrindChildProcess || mode_ == CallgrindParentProcess) {
measurer = new QBenchmarkCallgrindMeasurer;
#endif
diff --git a/src/testlib/qbenchmark_p.h b/src/testlib/qbenchmark_p.h
index 3fa9c5f534..49868ac23a 100644
--- a/src/testlib/qbenchmark_p.h
+++ b/src/testlib/qbenchmark_p.h
@@ -55,12 +55,6 @@
#include <QtCore/qglobal.h>
-#if (defined(Q_OS_LINUX) || defined Q_OS_MACOS) && QT_CONFIG(process)
-#define QTESTLIB_USE_VALGRIND
-#else
-#undef QTESTLIB_USE_VALGRIND
-#endif
-
#if defined(Q_OS_LINUX) && !defined(QT_LINUXBASE) && !defined(Q_OS_ANDROID)
#define QTESTLIB_USE_PERF_EVENTS
#else
@@ -70,7 +64,7 @@
#include <QtTest/private/qbenchmarkmeasurement_p.h>
#include <QtCore/QMap>
#include <QtTest/qttestglobal.h>
-#ifdef QTESTLIB_USE_VALGRIND
+#if QT_CONFIG(valgrind)
#include <QtTest/private/qbenchmarkvalgrind_p.h>
#endif
#ifdef QTESTLIB_USE_PERF_EVENTS
diff --git a/src/testlib/qbenchmarkvalgrind.cpp b/src/testlib/qbenchmarkvalgrind.cpp
index 7d24eb8293..0dac804338 100644
--- a/src/testlib/qbenchmarkvalgrind.cpp
+++ b/src/testlib/qbenchmarkvalgrind.cpp
@@ -39,8 +39,6 @@
#include <QtTest/private/qbenchmark_p.h>
-#ifdef QTESTLIB_USE_VALGRIND
-
#include <QtTest/private/qbenchmarkvalgrind_p.h>
#include <QtCore/qstringlist.h>
#include <QtCore/qcoreapplication.h>
@@ -243,5 +241,3 @@ QTest::QBenchmarkMetric QBenchmarkCallgrindMeasurer::metricType()
}
QT_END_NAMESPACE
-
-#endif // QTESTLIB_USE_VALGRIND
diff --git a/src/testlib/qbenchmarkvalgrind_p.h b/src/testlib/qbenchmarkvalgrind_p.h
index 69219b9a65..0619be9f22 100644
--- a/src/testlib/qbenchmarkvalgrind_p.h
+++ b/src/testlib/qbenchmarkvalgrind_p.h
@@ -58,6 +58,8 @@
class QStringList;
+QT_REQUIRE_CONFIG(valgrind);
+
QT_BEGIN_NAMESPACE
class QBenchmarkValgrindUtils
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index cad29b5326..5faafba38d 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -574,7 +574,7 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, const char *const argv[], bool
" -nocrashhandler : Disables the crash handler. Useful for debugging crashes.\n"
"\n"
" Benchmarking options:\n"
-#ifdef QTESTLIB_USE_VALGRIND
+#if QT_CONFIG(valgrind)
" -callgrind : Use callgrind to time benchmarks\n"
#endif
#ifdef QTESTLIB_USE_PERF_EVENTS
@@ -717,7 +717,7 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, const char *const argv[], bool
}
} else if (strcmp(argv[i], "-nocrashhandler") == 0) {
QTest::noCrashHandler = true;
-#ifdef QTESTLIB_USE_VALGRIND
+#if QT_CONFIG(valgrind)
} else if (strcmp(argv[i], "-callgrind") == 0) {
if (QBenchmarkValgrindUtils::haveValgrind())
if (QFileInfo(QDir::currentPath()).isWritable()) {
@@ -1459,7 +1459,7 @@ void TestMethods::invokeTests(QObject *testObject) const
QScopedPointer<WatchDog> watchDog;
if (!debuggerPresent()
-#ifdef QTESTLIB_USE_VALGRIND
+#if QT_CONFIG(valgrind)
&& QBenchmarkGlobalData::current->mode() != QBenchmarkGlobalData::CallgrindChildProcess
#endif
) {
@@ -1866,7 +1866,7 @@ int QTest::qRun()
{
QTEST_ASSERT(currentTestObject);
-#ifdef QTESTLIB_USE_VALGRIND
+#if QT_CONFIG(valgrind)
int callgrindChildExitCode = 0;
#endif
@@ -1886,7 +1886,7 @@ int QTest::qRun()
} // !noCrashHandler
#endif // Q_OS_WIN
-#ifdef QTESTLIB_USE_VALGRIND
+#if QT_CONFIG(valgrind)
if (QBenchmarkGlobalData::current->mode() == QBenchmarkGlobalData::CallgrindParentProcess) {
if (Q_UNLIKELY(!qApp))
qFatal("QtTest: -callgrind option is not available with QTEST_APPLESS_MAIN");
@@ -1944,7 +1944,7 @@ int QTest::qRun()
}
#endif
-#ifdef QTESTLIB_USE_VALGRIND
+#if QT_CONFIG(valgrind)
if (QBenchmarkGlobalData::current->mode() == QBenchmarkGlobalData::CallgrindParentProcess)
return callgrindChildExitCode;
#endif
diff --git a/src/testlib/testlib.pro b/src/testlib/testlib.pro
index f52a913a08..530bc6b425 100644
--- a/src/testlib/testlib.pro
+++ b/src/testlib/testlib.pro
@@ -17,7 +17,6 @@ HEADERS = \
qbenchmark_p.h \
qbenchmarkmeasurement_p.h \
qbenchmarktimemeasurers_p.h \
- qbenchmarkvalgrind_p.h \
qbenchmarkevent_p.h \
qbenchmarkperfevents_p.h \
qbenchmarkmetric.h \
@@ -70,7 +69,6 @@ SOURCES = \
qabstracttestlogger.cpp \
qbenchmark.cpp \
qbenchmarkmeasurement.cpp \
- qbenchmarkvalgrind.cpp \
qbenchmarkevent.cpp \
qbenchmarkperfevents.cpp \
qbenchmarkmetric.cpp \
@@ -92,6 +90,13 @@ qtConfig(itemmodeltester) {
qabstractitemmodeltester.cpp
}
+qtConfig(valgrind) {
+ HEADERS += \
+ qbenchmarkvalgrind_p.h
+ SOURCES += \
+ qbenchmarkvalgrind.cpp
+}
+
DEFINES *= QT_NO_CAST_TO_ASCII \
QT_NO_CAST_FROM_ASCII \
QT_NO_FOREACH \