diff options
Diffstat (limited to 'src/testlib')
-rw-r--r-- | src/testlib/qtestcase.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index 10bf200f4f..7b225ef5b4 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -2863,6 +2863,8 @@ bool QTest::currentTestFailed() void QTest::qSleep(int ms) { QTEST_ASSERT(ms > 0); + QElapsedTimer timer; + timer.start(); #if defined(Q_OS_WINRT) WaitForSingleObjectEx(GetCurrentThread(), ms, true); @@ -2872,6 +2874,15 @@ void QTest::qSleep(int ms) struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 }; nanosleep(&ts, NULL); #endif + // Warn if the elapsed time was more than 50% longer or more than 10% shorter than the + // requested time. + qint64 requested = 1000000 * (qint64)ms; + qint64 diff = timer.nsecsElapsed() - requested; + if (diff * 2 > requested || diff * 10 < -requested) { + QTestLog::warn(qPrintable( + QString::fromLatin1("QTest::qSleep() should have taken %1ns, but actually took %2ns!") + .arg(requested).arg(diff + requested)), __FILE__, __LINE__); + } } /*! \internal |