summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Arne Vestbø <[email protected]>2020-07-21 22:38:47 +0200
committerTor Arne Vestbø <[email protected]>2020-07-22 23:23:16 +0200
commite7371c19d9ab89847115efbe490a23c24c23f20b (patch)
tree558a84b60707509687ee0955e4f0e4eb99f135c0
parent304ec18a1ada480f45d1831c24af9b341cf62b67 (diff)
testlib: Defer signal dumper start until tests are ready to run
We don't want the signal dumper to pick up signals that our own test machinery produces, such as the ones emitted from the watchdog thread startup and shutdown. This would otherwise produce: tst_Signaldumper::initTestCase() Signal: QThread(7fc969e0d870) started () At startup, and at shutdown even more confusingly: tst_Signaldumper::UnknownTestFunc() Signal: QThread(7fc969e0d870) finished () Change-Id: I9e81fa168eaa92551d38d5576973bbf95ac23364 Reviewed-by: Volker Hilsheimer <[email protected]>
-rw-r--r--src/testlib/qsignaldumper.cpp10
-rw-r--r--src/testlib/qsignaldumper_p.h3
-rw-r--r--src/testlib/qtestcase.cpp8
-rw-r--r--tests/auto/testlib/selftests/expected_signaldumper.junitxml12
-rw-r--r--tests/auto/testlib/selftests/expected_signaldumper.lightxml6
-rw-r--r--tests/auto/testlib/selftests/expected_signaldumper.tap2
-rw-r--r--tests/auto/testlib/selftests/expected_signaldumper.teamcity1
-rw-r--r--tests/auto/testlib/selftests/expected_signaldumper.txt2
-rw-r--r--tests/auto/testlib/selftests/expected_signaldumper.xml6
9 files changed, 21 insertions, 29 deletions
diff --git a/src/testlib/qsignaldumper.cpp b/src/testlib/qsignaldumper.cpp
index 8510b3ed6f8..f43b3a8d92d 100644
--- a/src/testlib/qsignaldumper.cpp
+++ b/src/testlib/qsignaldumper.cpp
@@ -170,8 +170,16 @@ static void qSignalDumperCallbackEndSignal(QObject *caller, int /*signal_index*/
}
+void QSignalDumper::setEnabled(bool enabled)
+{
+ s_isEnabled = enabled;
+}
+
void QSignalDumper::startDump()
{
+ if (!s_isEnabled)
+ return;
+
static QSignalSpyCallbackSet set = { QTest::qSignalDumperCallback,
QTest::qSignalDumperCallbackSlot, QTest::qSignalDumperCallbackEndSignal, nullptr };
qt_register_signal_spy_callbacks(&set);
@@ -194,4 +202,6 @@ void QSignalDumper::clearIgnoredClasses()
QTest::ignoreClasses()->clear();
}
+bool QSignalDumper::s_isEnabled = false;
+
QT_END_NAMESPACE
diff --git a/src/testlib/qsignaldumper_p.h b/src/testlib/qsignaldumper_p.h
index 0f443fd612c..e211f5c059f 100644
--- a/src/testlib/qsignaldumper_p.h
+++ b/src/testlib/qsignaldumper_p.h
@@ -60,11 +60,14 @@ class QByteArray;
class QSignalDumper
{
public:
+ static void setEnabled(bool);
static void startDump();
static void endDump();
static void ignoreClass(const QByteArray &klass);
static void clearIgnoredClasses();
+private:
+ static bool s_isEnabled;
};
QT_END_NAMESPACE
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index e352f72e20a..6b55ae43c6d 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -643,7 +643,7 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, const char *const argv[], bool
} else if (strcmp(argv[i], "-v2") == 0) {
QTestLog::setVerboseLevel(2);
} else if (strcmp(argv[i], "-vs") == 0) {
- QSignalDumper::startDump();
+ QSignalDumper::setEnabled(true);
} else if (strcmp(argv[i], "-o") == 0) {
if (i + 1 >= argc) {
fprintf(stderr, "-o needs an extra parameter specifying the filename and optional format\n");
@@ -1485,6 +1485,8 @@ void TestMethods::invokeTests(QObject *testObject) const
watchDog.reset(new WatchDog);
}
+ QSignalDumper::startDump();
+
if (!QTestResult::skipCurrentTest() && !QTest::currentTestFailed()) {
if (m_initTestCaseMethod.isValid())
m_initTestCaseMethod.invoke(testObject, Qt::DirectConnection);
@@ -1517,6 +1519,8 @@ void TestMethods::invokeTests(QObject *testObject) const
}
QTestResult::finishedCurrentTestFunction();
QTestResult::setCurrentTestFunction(nullptr);
+
+ QSignalDumper::endDump();
}
#if defined(Q_OS_WIN)
@@ -1965,8 +1969,6 @@ void QTest::qCleanup()
delete QBenchmarkGlobalData::current;
QBenchmarkGlobalData::current = nullptr;
- QSignalDumper::endDump();
-
#if defined(Q_OS_MACOS)
IOPMAssertionRelease(macPowerSavingDisabled);
#endif
diff --git a/tests/auto/testlib/selftests/expected_signaldumper.junitxml b/tests/auto/testlib/selftests/expected_signaldumper.junitxml
index 90940e061fa..1077816d8d9 100644
--- a/tests/auto/testlib/selftests/expected_signaldumper.junitxml
+++ b/tests/auto/testlib/selftests/expected_signaldumper.junitxml
@@ -1,13 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<testsuite errors="126" failures="0" tests="13" name="tst_Signaldumper">
+<testsuite errors="124" failures="0" tests="13" name="tst_Signaldumper">
<properties>
<property value="@INSERT_QT_VERSION_HERE@" name="QTestVersion"/>
<property value="@INSERT_QT_VERSION_HERE@" name="QtVersion"/>
<property value="" name="QtBuild"/>
</properties>
- <testcase result="pass" name="initTestCase">
- <!-- message="Signal: QThread(_POINTER_) started ()" type="info" -->
- </testcase>
+ <testcase result="pass" name="initTestCase"/>
<testcase result="pass" name="noConnections">
<!-- message="Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()" type="info" -->
<!-- message="Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))" type="info" -->
@@ -154,11 +152,8 @@
<testcase result="pass" name="deletingSender">
<!-- message="Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()" type="info" -->
</testcase>
- <testcase result="pass" name="cleanupTestCase">
- <!-- message=" Signal: QThread(_POINTER_) finished ()" type="info" -->
- </testcase>
+ <testcase result="pass" name="cleanupTestCase"/>
<system-err>
-<![CDATA[Signal: QThread(_POINTER_) started ()]]>
<![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()]]>
<![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))]]>
<![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()]]>
@@ -283,6 +278,5 @@
<![CDATA[Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())]]>
<![CDATA[Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())]]>
<![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()]]>
-<![CDATA[ Signal: QThread(_POINTER_) finished ()]]>
</system-err>
</testsuite>
diff --git a/tests/auto/testlib/selftests/expected_signaldumper.lightxml b/tests/auto/testlib/selftests/expected_signaldumper.lightxml
index 2d5e6e695a3..b43475089e8 100644
--- a/tests/auto/testlib/selftests/expected_signaldumper.lightxml
+++ b/tests/auto/testlib/selftests/expected_signaldumper.lightxml
@@ -4,9 +4,6 @@
<QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
</Environment>
<TestFunction name="initTestCase">
-<Message type="info" file="" line="0">
- <Description><![CDATA[Signal: QThread(_POINTER_) started ()]]></Description>
-</Message>
<Incident type="pass" file="" line="0" />
<Duration msecs="0"/>
</TestFunction>
@@ -579,7 +576,4 @@
<Incident type="pass" file="" line="0" />
<Duration msecs="0"/>
</TestFunction>
-<Message type="info" file="" line="0">
- <Description><![CDATA[ Signal: QThread(_POINTER_) finished ()]]></Description>
-</Message>
<Duration msecs="0"/>
diff --git a/tests/auto/testlib/selftests/expected_signaldumper.tap b/tests/auto/testlib/selftests/expected_signaldumper.tap
index 8e7b2c5744d..4e0ae0bf4f9 100644
--- a/tests/auto/testlib/selftests/expected_signaldumper.tap
+++ b/tests/auto/testlib/selftests/expected_signaldumper.tap
@@ -1,6 +1,5 @@
TAP version 13
# tst_Signaldumper
-# Signal: QThread(_POINTER_) started ()
ok 1 - initTestCase()
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
@@ -146,7 +145,6 @@ ok 19 - variousTypes()
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
ok 20 - deletingSender()
ok 21 - cleanupTestCase()
-# Signal: QThread(_POINTER_) finished ()
1..21
# tests 21
# pass 21
diff --git a/tests/auto/testlib/selftests/expected_signaldumper.teamcity b/tests/auto/testlib/selftests/expected_signaldumper.teamcity
index f450cdc0473..fcf52d48c0a 100644
--- a/tests/auto/testlib/selftests/expected_signaldumper.teamcity
+++ b/tests/auto/testlib/selftests/expected_signaldumper.teamcity
@@ -1,6 +1,5 @@
##teamcity[testSuiteStarted name='tst_Signaldumper' flowId='tst_Signaldumper']
##teamcity[testStarted name='initTestCase()' flowId='tst_Signaldumper']
-##teamcity[testStdOut name='initTestCase()' out='INFO: Signal: QThread(_POINTER_) started ()' flowId='tst_Signaldumper']
##teamcity[testFinished name='initTestCase()' flowId='tst_Signaldumper']
##teamcity[testStarted name='noConnections()' flowId='tst_Signaldumper']
##teamcity[testStdOut name='noConnections()' out='INFO: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()|nINFO: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))' flowId='tst_Signaldumper']
diff --git a/tests/auto/testlib/selftests/expected_signaldumper.txt b/tests/auto/testlib/selftests/expected_signaldumper.txt
index ac4a2aed448..89eae697192 100644
--- a/tests/auto/testlib/selftests/expected_signaldumper.txt
+++ b/tests/auto/testlib/selftests/expected_signaldumper.txt
@@ -1,6 +1,5 @@
********* Start testing of tst_Signaldumper *********
Config: Using QtTest library
-INFO : tst_Signaldumper::initTestCase() Signal: QThread(_POINTER_) started ()
PASS : tst_Signaldumper::initTestCase()
INFO : tst_Signaldumper::noConnections() Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
INFO : tst_Signaldumper::noConnections() Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
@@ -146,6 +145,5 @@ PASS : tst_Signaldumper::variousTypes()
INFO : tst_Signaldumper::deletingSender() Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
PASS : tst_Signaldumper::deletingSender()
PASS : tst_Signaldumper::cleanupTestCase()
-INFO : tst_Signaldumper::UnknownTestFunc() Signal: QThread(_POINTER_) finished ()
Totals: 21 passed, 0 failed, 0 skipped, 0 blacklisted, 0ms
********* Finished testing of tst_Signaldumper *********
diff --git a/tests/auto/testlib/selftests/expected_signaldumper.xml b/tests/auto/testlib/selftests/expected_signaldumper.xml
index 37e7b3de926..2c251ec1111 100644
--- a/tests/auto/testlib/selftests/expected_signaldumper.xml
+++ b/tests/auto/testlib/selftests/expected_signaldumper.xml
@@ -6,9 +6,6 @@
<QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
</Environment>
<TestFunction name="initTestCase">
-<Message type="info" file="" line="0">
- <Description><![CDATA[Signal: QThread(_POINTER_) started ()]]></Description>
-</Message>
<Incident type="pass" file="" line="0" />
<Duration msecs="0"/>
</TestFunction>
@@ -581,8 +578,5 @@
<Incident type="pass" file="" line="0" />
<Duration msecs="0"/>
</TestFunction>
-<Message type="info" file="" line="0">
- <Description><![CDATA[ Signal: QThread(_POINTER_) finished ()]]></Description>
-</Message>
<Duration msecs="0"/>
</TestCase>