diff --git a/doc/src/snippets/code/src_qtestlib_qtestcase.cpp b/doc/src/snippets/code/src_qtestlib_qtestcase.cpp index 5b1f558610f..75d0dd5b609 100644 --- a/doc/src/snippets/code/src_qtestlib_qtestcase.cpp +++ b/doc/src/snippets/code/src_qtestlib_qtestcase.cpp @@ -100,7 +100,7 @@ QTEST(QString("hello").toUpper(), "myString"); //! [8] if (!QSqlDatabase::drivers().contains("SQLITE")) - QSKIP("This test requires the SQLITE database driver", SkipAll); + QSKIP("This test requires the SQLITE database driver"); //! [8] diff --git a/src/testlib/qtest_global.h b/src/testlib/qtest_global.h index 974d82a0d56..6789c5938c4 100644 --- a/src/testlib/qtest_global.h +++ b/src/testlib/qtest_global.h @@ -77,7 +77,6 @@ QT_MODULE(Test) namespace QTest { - enum SkipMode { SkipSingle = 1, SkipAll = 2 }; enum TestFailMode { Abort = 1, Continue = 2 }; int Q_TESTLIB_EXPORT qt_snprintf(char *str, int size, const char *format, ...); diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index 451fa5b761f..0ff760be388 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -267,23 +267,24 @@ QT_BEGIN_NAMESPACE \sa QCOMPARE() */ -/*! \macro QSKIP(description, mode) +/*! \macro QSKIP(description) \relates QTest The QSKIP() macro stops execution of the test without adding a failure to the test log. You can use it to skip tests that wouldn't make sense in the current configuration. The text \a description is appended to the test log and should - contain an explanation why the test couldn't be executed. \a mode is a QTest::SkipMode - and describes whether to proceed with the rest of the test data or not. + contain an explanation of why the test couldn't be executed. + + If the test is data-driven, each call to QSKIP() will skip only the current row, + so an unconditional call to QSKIP will produce one skip message in the test log + for each row of test data. \bold {Note:} This macro can only be used in a test function that is invoked by the test framework. Example: \snippet doc/src/snippets/code/src_qtestlib_qtestcase.cpp 8 - - \sa QTest::SkipMode */ /*! \macro QEXPECT_FAIL(dataIndex, comment, mode) @@ -415,22 +416,6 @@ QT_BEGIN_NAMESPACE {Chapter 5: Writing a Benchmark}{Writing a Benchmark} */ - - -/*! \enum QTest::SkipMode - - This enum describes the modes for skipping tests during execution - of the test data. - - \value SkipSingle Skips the current entry in the test table; continues - execution of all the other entries in the table. - - \value SkipAll Skips all the entries in the test table; the test won't - be executed further. - - \sa QSKIP() -*/ - /*! \enum QTest::TestFailMode This enum describes the modes for handling an expected failure of the @@ -1469,20 +1454,12 @@ static bool qInvokeTestMethod(const char *slotName, const char *data=0) QTestResult::setCurrentTestLocation(QTestResult::DataFunc); QTest::qt_snprintf(member, 512, "%s_data()", slot); invokeMethod(QTest::currentTestObject, member); - - // if we encounter a SkipAll in the _data slot, we skip the whole - // testfunction, no matter how much global data exists - if (QTestResult::skipCurrentTest()) { - QTestResult::setCurrentGlobalTestData(0); - break; - } } bool foundFunction = false; if (!QTestResult::skipCurrentTest()) { int curDataIndex = 0; const int dataCount = table.dataCount(); - QTestResult::setSkipCurrentTest(false); // Data tag requested but none available? if (data && !dataCount) { @@ -1498,6 +1475,7 @@ static bool qInvokeTestMethod(const char *slotName, const char *data=0) /* For each entry in the data table, do: */ do { + QTestResult::setSkipCurrentTest(false); if (!data || !qstrcmp(data, table.testData(curDataIndex)->dataTag())) { foundFunction = true; QTestDataSetter s(curDataIndex >= dataCount ? static_cast(0) @@ -1505,9 +1483,6 @@ static bool qInvokeTestMethod(const char *slotName, const char *data=0) qInvokeTestMethodDataEntry(slot); - if (QTestResult::skipCurrentTest()) - // check whether SkipAll was requested - break; if (data) break; } @@ -1954,15 +1929,13 @@ bool QTest::qVerify(bool statement, const char *statementStr, const char *descri return QTestResult::verify(statement, statementStr, description, file, line); } -/*! \fn void QTest::qSkip(const char *message, SkipMode mode, const char *file, int line) +/*! \fn void QTest::qSkip(const char *message, const char *file, int line) \internal */ -void QTest::qSkip(const char *message, QTest::SkipMode mode, - const char *file, int line) +void QTest::qSkip(const char *message, const char *file, int line) { QTestResult::addSkip(message, file, line); - if (mode == QTest::SkipAll) - QTestResult::setSkipCurrentTest(true); + QTestResult::setSkipCurrentTest(true); } /*! \fn bool QTest::qExpectFail(const char *dataIndex, const char *comment, TestFailMode mode, const char *file, int line) diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h index 3e0003505ab..7ba9fd714ba 100644 --- a/src/testlib/qtestcase.h +++ b/src/testlib/qtestcase.h @@ -47,6 +47,8 @@ #include #include +#include + QT_BEGIN_HEADER QT_BEGIN_NAMESPACE @@ -110,9 +112,12 @@ do { \ QCOMPARE(__expr, __expected); \ } while (0) -#define QSKIP(statement, mode) \ +#define QSKIP(statement, ...) \ do {\ - QTest::qSkip(statement, QTest::mode, __FILE__, __LINE__);\ + if (strcmp(#__VA_ARGS__, "") != 0)\ + QTest::qWarn("The two argument version of QSKIP is deprecated and will be removed soon. "\ + "Please update this test by removing the second parameter.", __FILE__, __LINE__);\ + QTest::qSkip(statement, __FILE__, __LINE__);\ return;\ } while (0) @@ -162,7 +167,7 @@ namespace QTest Q_TESTLIB_EXPORT bool qVerify(bool statement, const char *statementStr, const char *description, const char *file, int line); Q_TESTLIB_EXPORT void qFail(const char *statementStr, const char *file, int line); - Q_TESTLIB_EXPORT void qSkip(const char *message, SkipMode mode, const char *file, int line); + Q_TESTLIB_EXPORT void qSkip(const char *message, const char *file, int line); Q_TESTLIB_EXPORT bool qExpectFail(const char *dataIndex, const char *comment, TestFailMode mode, const char *file, int line); Q_TESTLIB_EXPORT void qWarn(const char *message, const char *file = 0, int line = 0); diff --git a/tests/auto/testlib/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp b/tests/auto/testlib/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp index 35054968299..1199462c999 100644 --- a/tests/auto/testlib/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp +++ b/tests/auto/testlib/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp @@ -76,7 +76,7 @@ void tst_BenchlibCallgrind::failInChildProcess() void tst_BenchlibCallgrind::twoHundredMillionInstructions() { #if !defined(__GNUC__) || !defined(__i386) - QSKIP("This test is only defined for gcc and x86.", SkipAll); + QSKIP("This test is only defined for gcc and x86."); #else QBENCHMARK { __asm__ __volatile__( diff --git a/tests/auto/testlib/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp b/tests/auto/testlib/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp index cc8b3a454fa..9e274edea57 100644 --- a/tests/auto/testlib/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp +++ b/tests/auto/testlib/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp @@ -56,7 +56,7 @@ private slots: void tst_BenchlibTickCounter::threeBillionTicks() { #ifndef HAVE_TICK_COUNTER - QSKIP("Tick counter not available on this platform", SkipAll); + QSKIP("Tick counter not available on this platform"); #else QBENCHMARK { CycleCounterTicks start = getticks(); diff --git a/tests/auto/testlib/selftests/expected_globaldata.lightxml b/tests/auto/testlib/selftests/expected_globaldata.lightxml index b8208aa481e..7a50f01cb8a 100644 --- a/tests/auto/testlib/selftests/expected_globaldata.lightxml +++ b/tests/auto/testlib/selftests/expected_globaldata.lightxml @@ -94,6 +94,18 @@ + + + + + + + + + + + + diff --git a/tests/auto/testlib/selftests/expected_globaldata.txt b/tests/auto/testlib/selftests/expected_globaldata.txt index efd8272d5c5..e3905e2fa3c 100644 --- a/tests/auto/testlib/selftests/expected_globaldata.txt +++ b/tests/auto/testlib/selftests/expected_globaldata.txt @@ -25,6 +25,10 @@ QDEBUG : tst_globaldata::skipLocal(1:local 1) init skipLocal local 1 SKIP : tst_globaldata::skipLocal(1:local 1) skipping Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp(149)] QDEBUG : tst_globaldata::skipLocal(1:local 1) cleanup skipLocal local 1 +QDEBUG : tst_globaldata::skipLocal(1:local 2) init skipLocal local 2 +SKIP : tst_globaldata::skipLocal(1:local 2) skipping + Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp(149)] +QDEBUG : tst_globaldata::skipLocal(1:local 2) cleanup skipLocal local 2 QDEBUG : tst_globaldata::skipSingle(1:local 1) init skipSingle local 1 QDEBUG : tst_globaldata::skipSingle(1:local 1) global: false local: false QDEBUG : tst_globaldata::skipSingle(1:local 1) cleanup skipSingle local 1 @@ -41,5 +45,5 @@ QDEBUG : tst_globaldata::skipSingle(2:local 2) cleanup skipSingle local 2 PASS : tst_globaldata::skipSingle() QDEBUG : tst_globaldata::cleanupTestCase() cleanupTestCase cleanupTestCase (null) PASS : tst_globaldata::cleanupTestCase() -Totals: 4 passed, 0 failed, 3 skipped +Totals: 4 passed, 0 failed, 4 skipped ********* Finished testing of tst_globaldata ********* diff --git a/tests/auto/testlib/selftests/expected_globaldata.xml b/tests/auto/testlib/selftests/expected_globaldata.xml index e0c69475d69..9abbeeef35e 100644 --- a/tests/auto/testlib/selftests/expected_globaldata.xml +++ b/tests/auto/testlib/selftests/expected_globaldata.xml @@ -96,6 +96,18 @@ + + + + + + + + + + + + diff --git a/tests/auto/testlib/selftests/expected_globaldata.xunitxml b/tests/auto/testlib/selftests/expected_globaldata.xunitxml index eade59734f7..9e0cd149dc0 100644 --- a/tests/auto/testlib/selftests/expected_globaldata.xunitxml +++ b/tests/auto/testlib/selftests/expected_globaldata.xunitxml @@ -1,5 +1,5 @@ - + @@ -32,6 +32,9 @@ + + + @@ -72,6 +75,9 @@ + + + diff --git a/tests/auto/testlib/selftests/expected_singleskip.txt b/tests/auto/testlib/selftests/expected_singleskip.txt index 1e54c469b48..b9085b1cbdc 100644 --- a/tests/auto/testlib/selftests/expected_singleskip.txt +++ b/tests/auto/testlib/selftests/expected_singleskip.txt @@ -2,7 +2,7 @@ Config: Using QTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@ PASS : tst_SingleSkip::initTestCase() SKIP : tst_SingleSkip::myTest() skipping test - Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp(23)] + Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp(56)] PASS : tst_SingleSkip::cleanupTestCase() Totals: 2 passed, 0 failed, 1 skipped ********* Finished testing of tst_SingleSkip ********* diff --git a/tests/auto/testlib/selftests/expected_skipinit.txt b/tests/auto/testlib/selftests/expected_skipinit.txt index a8b4f8ea941..a86060fa5af 100644 --- a/tests/auto/testlib/selftests/expected_skipinit.txt +++ b/tests/auto/testlib/selftests/expected_skipinit.txt @@ -1,7 +1,7 @@ ********* Start testing of tst_SkipInit ********* Config: Using QTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@ SKIP : tst_SkipInit::initTestCase() Skip inside initTestCase. This should skip all tests in the class. - Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp(22)] + Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp(55)] PASS : tst_SkipInit::cleanupTestCase() Totals: 1 passed, 0 failed, 1 skipped ********* Finished testing of tst_SkipInit ********* diff --git a/tests/auto/testlib/selftests/expected_skipinitdata.lightxml b/tests/auto/testlib/selftests/expected_skipinitdata.lightxml index e933b7157dd..cd820240fd7 100644 --- a/tests/auto/testlib/selftests/expected_skipinitdata.lightxml +++ b/tests/auto/testlib/selftests/expected_skipinitdata.lightxml @@ -4,6 +4,6 @@ - + diff --git a/tests/auto/testlib/selftests/expected_skipinitdata.txt b/tests/auto/testlib/selftests/expected_skipinitdata.txt index 8640855497b..a4cbbea194c 100644 --- a/tests/auto/testlib/selftests/expected_skipinitdata.txt +++ b/tests/auto/testlib/selftests/expected_skipinitdata.txt @@ -1,6 +1,6 @@ ********* Start testing of tst_SkipInitData ********* Config: Using QTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@ -SKIP : tst_SkipInitData::initTestCase() Skip inside initTestCase. This should skip all tests in the class. - Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp(23)] +SKIP : tst_SkipInitData::initTestCase() Skip inside initTestCase_data. This should skip all tests in the class. + Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp(56)] Totals: 0 passed, 0 failed, 1 skipped ********* Finished testing of tst_SkipInitData ********* diff --git a/tests/auto/testlib/selftests/expected_skipinitdata.xml b/tests/auto/testlib/selftests/expected_skipinitdata.xml index 7ad34d913f4..83717005473 100644 --- a/tests/auto/testlib/selftests/expected_skipinitdata.xml +++ b/tests/auto/testlib/selftests/expected_skipinitdata.xml @@ -6,7 +6,7 @@ - + diff --git a/tests/auto/testlib/selftests/expected_skipinitdata.xunitxml b/tests/auto/testlib/selftests/expected_skipinitdata.xunitxml index 93967eb0559..699d50f7a79 100644 --- a/tests/auto/testlib/selftests/expected_skipinitdata.xunitxml +++ b/tests/auto/testlib/selftests/expected_skipinitdata.xunitxml @@ -5,9 +5,9 @@ - + - + diff --git a/tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp b/tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp index 18b91ccfe52..898cccf4354 100644 --- a/tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp +++ b/tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp @@ -126,7 +126,7 @@ void tst_globaldata::skip_data() QTest::newRow("local 1") << false; QTest::newRow("local 2") << true; - QSKIP("skipping", SkipAll); + QSKIP("skipping"); } void tst_globaldata::skip() @@ -140,13 +140,13 @@ void tst_globaldata::skipSingle() QFETCH(bool, booll); if (booli && !booll) - QSKIP("skipping", SkipSingle); + QSKIP("skipping"); qDebug() << "global:" << booli << "local:" << booll; } void tst_globaldata::skipLocal() { - QSKIP("skipping", SkipAll); + QSKIP("skipping"); } QTEST_MAIN(tst_globaldata) diff --git a/tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp b/tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp index 5567b88022c..7701eb81a06 100644 --- a/tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp +++ b/tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp @@ -53,7 +53,7 @@ private slots: void tst_SingleSkip::myTest() const { - QSKIP("skipping test", SkipAll); + QSKIP("skipping test"); } QTEST_MAIN(tst_SingleSkip) diff --git a/tests/auto/testlib/selftests/skip/tst_skip.cpp b/tests/auto/testlib/selftests/skip/tst_skip.cpp index b5b53884b73..905fe2dde4c 100644 --- a/tests/auto/testlib/selftests/skip/tst_skip.cpp +++ b/tests/auto/testlib/selftests/skip/tst_skip.cpp @@ -65,7 +65,7 @@ void tst_Skip::test_data() QTest::newRow("local 1") << false; QTest::newRow("local 2") << true; - QSKIP("skipping all", SkipAll); + QSKIP("skipping all"); } void tst_Skip::test() @@ -75,7 +75,7 @@ void tst_Skip::test() void tst_Skip::emptytest_data() { - QSKIP("skipping all", SkipAll); + QSKIP("skipping all"); } void tst_Skip::emptytest() @@ -94,7 +94,7 @@ void tst_Skip::singleSkip() { QFETCH(bool, booll); if (!booll) - QSKIP("skipping one", SkipSingle); + QSKIP("skipping one"); qDebug("this line should only be reached once (%s)", booll ? "true" : "false"); } diff --git a/tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp b/tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp index 4cd882f7477..1a9fc1eeeca 100644 --- a/tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp +++ b/tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp @@ -52,7 +52,7 @@ private slots: void tst_SkipInit::initTestCase() const { - QSKIP("Skip inside initTestCase. This should skip all tests in the class.", SkipAll); + QSKIP("Skip inside initTestCase. This should skip all tests in the class."); } /*! \internal diff --git a/tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp b/tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp index fb97fc978d3..b09e99b32f3 100644 --- a/tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp +++ b/tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp @@ -53,7 +53,7 @@ private slots: void tst_SkipInitData::initTestCase_data() const { - QSKIP("Skip inside initTestCase. This should skip all tests in the class.", SkipAll); + QSKIP("Skip inside initTestCase_data. This should skip all tests in the class."); } void tst_SkipInitData::initTestCase() const diff --git a/tests/auto/testlib/selftests/xunit/tst_xunit.cpp b/tests/auto/testlib/selftests/xunit/tst_xunit.cpp index 8f2f7124263..05acc8cfe79 100644 --- a/tests/auto/testlib/selftests/xunit/tst_xunit.cpp +++ b/tests/auto/testlib/selftests/xunit/tst_xunit.cpp @@ -76,7 +76,7 @@ void tst_Xunit::testFunc2() void tst_Xunit::testFunc3() { - QSKIP("skipping this function!", SkipAll); + QSKIP("skipping this function!"); } void tst_Xunit::testFunc4()