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 <volker.hilsheimer@qt.io>
This commit is contained in:
parent
304ec18a1a
commit
e7371c19d9
@ -170,8 +170,16 @@ static void qSignalDumperCallbackEndSignal(QObject *caller, int /*signal_index*/
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QSignalDumper::setEnabled(bool enabled)
|
||||||
|
{
|
||||||
|
s_isEnabled = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
void QSignalDumper::startDump()
|
void QSignalDumper::startDump()
|
||||||
{
|
{
|
||||||
|
if (!s_isEnabled)
|
||||||
|
return;
|
||||||
|
|
||||||
static QSignalSpyCallbackSet set = { QTest::qSignalDumperCallback,
|
static QSignalSpyCallbackSet set = { QTest::qSignalDumperCallback,
|
||||||
QTest::qSignalDumperCallbackSlot, QTest::qSignalDumperCallbackEndSignal, nullptr };
|
QTest::qSignalDumperCallbackSlot, QTest::qSignalDumperCallbackEndSignal, nullptr };
|
||||||
qt_register_signal_spy_callbacks(&set);
|
qt_register_signal_spy_callbacks(&set);
|
||||||
@ -194,4 +202,6 @@ void QSignalDumper::clearIgnoredClasses()
|
|||||||
QTest::ignoreClasses()->clear();
|
QTest::ignoreClasses()->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QSignalDumper::s_isEnabled = false;
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
@ -60,11 +60,14 @@ class QByteArray;
|
|||||||
class QSignalDumper
|
class QSignalDumper
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
static void setEnabled(bool);
|
||||||
static void startDump();
|
static void startDump();
|
||||||
static void endDump();
|
static void endDump();
|
||||||
|
|
||||||
static void ignoreClass(const QByteArray &klass);
|
static void ignoreClass(const QByteArray &klass);
|
||||||
static void clearIgnoredClasses();
|
static void clearIgnoredClasses();
|
||||||
|
private:
|
||||||
|
static bool s_isEnabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
@ -643,7 +643,7 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, const char *const argv[], bool
|
|||||||
} else if (strcmp(argv[i], "-v2") == 0) {
|
} else if (strcmp(argv[i], "-v2") == 0) {
|
||||||
QTestLog::setVerboseLevel(2);
|
QTestLog::setVerboseLevel(2);
|
||||||
} else if (strcmp(argv[i], "-vs") == 0) {
|
} else if (strcmp(argv[i], "-vs") == 0) {
|
||||||
QSignalDumper::startDump();
|
QSignalDumper::setEnabled(true);
|
||||||
} else if (strcmp(argv[i], "-o") == 0) {
|
} else if (strcmp(argv[i], "-o") == 0) {
|
||||||
if (i + 1 >= argc) {
|
if (i + 1 >= argc) {
|
||||||
fprintf(stderr, "-o needs an extra parameter specifying the filename and optional format\n");
|
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);
|
watchDog.reset(new WatchDog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QSignalDumper::startDump();
|
||||||
|
|
||||||
if (!QTestResult::skipCurrentTest() && !QTest::currentTestFailed()) {
|
if (!QTestResult::skipCurrentTest() && !QTest::currentTestFailed()) {
|
||||||
if (m_initTestCaseMethod.isValid())
|
if (m_initTestCaseMethod.isValid())
|
||||||
m_initTestCaseMethod.invoke(testObject, Qt::DirectConnection);
|
m_initTestCaseMethod.invoke(testObject, Qt::DirectConnection);
|
||||||
@ -1517,6 +1519,8 @@ void TestMethods::invokeTests(QObject *testObject) const
|
|||||||
}
|
}
|
||||||
QTestResult::finishedCurrentTestFunction();
|
QTestResult::finishedCurrentTestFunction();
|
||||||
QTestResult::setCurrentTestFunction(nullptr);
|
QTestResult::setCurrentTestFunction(nullptr);
|
||||||
|
|
||||||
|
QSignalDumper::endDump();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(Q_OS_WIN)
|
#if defined(Q_OS_WIN)
|
||||||
@ -1965,8 +1969,6 @@ void QTest::qCleanup()
|
|||||||
delete QBenchmarkGlobalData::current;
|
delete QBenchmarkGlobalData::current;
|
||||||
QBenchmarkGlobalData::current = nullptr;
|
QBenchmarkGlobalData::current = nullptr;
|
||||||
|
|
||||||
QSignalDumper::endDump();
|
|
||||||
|
|
||||||
#if defined(Q_OS_MACOS)
|
#if defined(Q_OS_MACOS)
|
||||||
IOPMAssertionRelease(macPowerSavingDisabled);
|
IOPMAssertionRelease(macPowerSavingDisabled);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?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>
|
<properties>
|
||||||
<property value="@INSERT_QT_VERSION_HERE@" name="QTestVersion"/>
|
<property value="@INSERT_QT_VERSION_HERE@" name="QTestVersion"/>
|
||||||
<property value="@INSERT_QT_VERSION_HERE@" name="QtVersion"/>
|
<property value="@INSERT_QT_VERSION_HERE@" name="QtVersion"/>
|
||||||
<property value="" name="QtBuild"/>
|
<property value="" name="QtBuild"/>
|
||||||
</properties>
|
</properties>
|
||||||
<testcase result="pass" name="initTestCase">
|
<testcase result="pass" name="initTestCase"/>
|
||||||
<!-- message="Signal: QThread(_POINTER_) started ()" type="info" -->
|
|
||||||
</testcase>
|
|
||||||
<testcase result="pass" name="noConnections">
|
<testcase result="pass" name="noConnections">
|
||||||
<!-- message="Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()" type="info" -->
|
<!-- message="Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()" type="info" -->
|
||||||
<!-- message="Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))" type="info" -->
|
<!-- message="Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))" type="info" -->
|
||||||
@ -154,11 +152,8 @@
|
|||||||
<testcase result="pass" name="deletingSender">
|
<testcase result="pass" name="deletingSender">
|
||||||
<!-- message="Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()" type="info" -->
|
<!-- message="Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()" type="info" -->
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase result="pass" name="cleanupTestCase">
|
<testcase result="pass" name="cleanupTestCase"/>
|
||||||
<!-- message=" Signal: QThread(_POINTER_) finished ()" type="info" -->
|
|
||||||
</testcase>
|
|
||||||
<system-err>
|
<system-err>
|
||||||
<![CDATA[Signal: QThread(_POINTER_) started ()]]>
|
|
||||||
<![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()]]>
|
<![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()]]>
|
||||||
<![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))]]>
|
<![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))]]>
|
||||||
<![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()]]>
|
<![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_) qVariantSignal (QVariant())]]>
|
<![CDATA[Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())]]>
|
||||||
<![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()]]>
|
<![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()]]>
|
||||||
<![CDATA[ Signal: QThread(_POINTER_) finished ()]]>
|
|
||||||
</system-err>
|
</system-err>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
|
@ -4,9 +4,6 @@
|
|||||||
<QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
|
<QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
|
||||||
</Environment>
|
</Environment>
|
||||||
<TestFunction name="initTestCase">
|
<TestFunction name="initTestCase">
|
||||||
<Message type="info" file="" line="0">
|
|
||||||
<Description><![CDATA[Signal: QThread(_POINTER_) started ()]]></Description>
|
|
||||||
</Message>
|
|
||||||
<Incident type="pass" file="" line="0" />
|
<Incident type="pass" file="" line="0" />
|
||||||
<Duration msecs="0"/>
|
<Duration msecs="0"/>
|
||||||
</TestFunction>
|
</TestFunction>
|
||||||
@ -579,7 +576,4 @@
|
|||||||
<Incident type="pass" file="" line="0" />
|
<Incident type="pass" file="" line="0" />
|
||||||
<Duration msecs="0"/>
|
<Duration msecs="0"/>
|
||||||
</TestFunction>
|
</TestFunction>
|
||||||
<Message type="info" file="" line="0">
|
|
||||||
<Description><![CDATA[ Signal: QThread(_POINTER_) finished ()]]></Description>
|
|
||||||
</Message>
|
|
||||||
<Duration msecs="0"/>
|
<Duration msecs="0"/>
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
TAP version 13
|
TAP version 13
|
||||||
# tst_Signaldumper
|
# tst_Signaldumper
|
||||||
# Signal: QThread(_POINTER_) started ()
|
|
||||||
ok 1 - initTestCase()
|
ok 1 - initTestCase()
|
||||||
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
|
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
|
||||||
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
|
# Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
|
||||||
@ -146,7 +145,6 @@ ok 19 - variousTypes()
|
|||||||
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
|
# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
|
||||||
ok 20 - deletingSender()
|
ok 20 - deletingSender()
|
||||||
ok 21 - cleanupTestCase()
|
ok 21 - cleanupTestCase()
|
||||||
# Signal: QThread(_POINTER_) finished ()
|
|
||||||
1..21
|
1..21
|
||||||
# tests 21
|
# tests 21
|
||||||
# pass 21
|
# pass 21
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
##teamcity[testSuiteStarted name='tst_Signaldumper' flowId='tst_Signaldumper']
|
##teamcity[testSuiteStarted name='tst_Signaldumper' flowId='tst_Signaldumper']
|
||||||
##teamcity[testStarted name='initTestCase()' 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[testFinished name='initTestCase()' flowId='tst_Signaldumper']
|
||||||
##teamcity[testStarted name='noConnections()' 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']
|
##teamcity[testStdOut name='noConnections()' out='INFO: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()|nINFO: Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))' flowId='tst_Signaldumper']
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
********* Start testing of tst_Signaldumper *********
|
********* Start testing of tst_Signaldumper *********
|
||||||
Config: Using QtTest library
|
Config: Using QtTest library
|
||||||
INFO : tst_Signaldumper::initTestCase() Signal: QThread(_POINTER_) started ()
|
|
||||||
PASS : tst_Signaldumper::initTestCase()
|
PASS : tst_Signaldumper::initTestCase()
|
||||||
INFO : tst_Signaldumper::noConnections() Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
|
INFO : tst_Signaldumper::noConnections() Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
|
||||||
INFO : tst_Signaldumper::noConnections() Signal: SignalSlotClass(_POINTER_) signalWithParameters (int(242), char(m))
|
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 ()
|
INFO : tst_Signaldumper::deletingSender() Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
|
||||||
PASS : tst_Signaldumper::deletingSender()
|
PASS : tst_Signaldumper::deletingSender()
|
||||||
PASS : tst_Signaldumper::cleanupTestCase()
|
PASS : tst_Signaldumper::cleanupTestCase()
|
||||||
INFO : tst_Signaldumper::UnknownTestFunc() Signal: QThread(_POINTER_) finished ()
|
|
||||||
Totals: 21 passed, 0 failed, 0 skipped, 0 blacklisted, 0ms
|
Totals: 21 passed, 0 failed, 0 skipped, 0 blacklisted, 0ms
|
||||||
********* Finished testing of tst_Signaldumper *********
|
********* Finished testing of tst_Signaldumper *********
|
||||||
|
@ -6,9 +6,6 @@
|
|||||||
<QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
|
<QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
|
||||||
</Environment>
|
</Environment>
|
||||||
<TestFunction name="initTestCase">
|
<TestFunction name="initTestCase">
|
||||||
<Message type="info" file="" line="0">
|
|
||||||
<Description><![CDATA[Signal: QThread(_POINTER_) started ()]]></Description>
|
|
||||||
</Message>
|
|
||||||
<Incident type="pass" file="" line="0" />
|
<Incident type="pass" file="" line="0" />
|
||||||
<Duration msecs="0"/>
|
<Duration msecs="0"/>
|
||||||
</TestFunction>
|
</TestFunction>
|
||||||
@ -581,8 +578,5 @@
|
|||||||
<Incident type="pass" file="" line="0" />
|
<Incident type="pass" file="" line="0" />
|
||||||
<Duration msecs="0"/>
|
<Duration msecs="0"/>
|
||||||
</TestFunction>
|
</TestFunction>
|
||||||
<Message type="info" file="" line="0">
|
|
||||||
<Description><![CDATA[ Signal: QThread(_POINTER_) finished ()]]></Description>
|
|
||||||
</Message>
|
|
||||||
<Duration msecs="0"/>
|
<Duration msecs="0"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user