summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJøger Hansegård <[email protected]>2025-01-28 14:59:15 +0100
committerMitch Curtis <[email protected]>2025-01-29 09:38:46 +0000
commit07318c81a700b4d4a46c81ae2e4f17c6b1e501c0 (patch)
tree22e3405a514170f1d2fdf263ee61c203c17c3721
parent892a020cc3ad7e3d5cdcb38d26091343e78695da (diff)
QTest: Reset repeat counter for each call to QTest::qRun()
This fix ensures that each call to QTest::qRun() runs all tests the requested number of repetitions. This fixes an issue where QTEST_QUICKCONTROLS_MAIN would only test the first style, and skip remaining styles. The cause was that the repeat counter was not reset between QTest::qRun() calls. Subsequent calls to QTest::qRun() would therefore not run any tests. Amends: 80a14c86b2739492d7f7fbdb1cbde1da85d1341d Fixes: QTBUG-133207 Pick-to: 6.9 6.8 6.7 Change-Id: Idb164fd01ac0b8e04e5dd74c3625f2c343f742c5 Reviewed-by: Mitch Curtis <[email protected]>
-rw-r--r--src/testlib/qtestcase.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index d0f0e6b5638..93d604c62b6 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -420,7 +420,6 @@ static int eventDelay = -1;
static int timeout = -1;
#endif
static int repetitions = 1;
-static bool repeatForever = false;
static bool skipBlacklisted = false;
namespace Internal {
@@ -604,7 +603,6 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, const char *const argv[], bool
const char *logFilename = nullptr;
repetitions = 1;
- repeatForever = false;
QTest::testFunctions.clear();
QTest::testTags.clear();
@@ -819,7 +817,6 @@ Q_TESTLIB_EXPORT void qtest_qParseArgs(int argc, const char *const argv[], bool
exit(1);
} else {
repetitions = qToInt(argv[++i]);
- repeatForever = repetitions < 0;
}
} else if (strcmp(argv[i], "-nocrashhandler") == 0) {
QTest::Internal::noCrashHandler = true;
@@ -1947,7 +1944,9 @@ int QTest::qRun()
}
TestMethods test(currentTestObject, std::move(commandLineMethods));
- while (QTestLog::failCount() == 0 && (repeatForever || repetitions-- > 0)) {
+ int remainingRepetitions = repetitions;
+ const bool repeatForever = repetitions < 0;
+ while (QTestLog::failCount() == 0 && (repeatForever || remainingRepetitions-- > 0)) {
QTestTable::globalTestTable();
test.invokeTests(currentTestObject);
QTestTable::clearGlobalTestTable();