diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2020-05-13 16:50:59 +0200 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2020-05-27 11:55:06 +0200 |
commit | ee92ee7a3cf7ef6017a2950a590005abfd37cf1a (patch) | |
tree | 6b3dc1b659e15f494b84f066311b545187a5478c /tests/auto/corelib/io/qprocess/tst_qprocess.cpp | |
parent | 3373aa8b351691d395cd15c634ca1b60fd688c6a (diff) |
Remove deprecated QProcess methods
Add default parameter for arguments in start, startDetached, and
execute for better source compatibility with Qt 5.15. This has the risk
of then hiding incorrect calls to the previous overload taking a single
"command" strings if code is ported from pre-5.15 or ignores deprecation
warnings. This is acceptable, given that the alternative is that all
calls to these functions would require a default constructed QStringList
as the second parameter.
Change-Id: I1ba4df97ac4894d007da5083c8359015d784ddbb
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'tests/auto/corelib/io/qprocess/tst_qprocess.cpp')
-rw-r--r-- | tests/auto/corelib/io/qprocess/tst_qprocess.cpp | 187 |
1 files changed, 7 insertions, 180 deletions
diff --git a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp index 7cd99326ff..f0316de945 100644 --- a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp +++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp @@ -156,12 +156,6 @@ private slots: void failToStartEmptyArgs_data(); void failToStartEmptyArgs(); -#if QT_DEPRECATED_SINCE(5, 13) - void restartProcessDeadlock_deprecated(); - void waitForReadyReadInAReadyReadSlot_deprecated(); - void finishProcessBeforeReadingDone_deprecated(); -#endif - protected slots: void readFromProcess(); void exitLoopSlot(); @@ -198,14 +192,6 @@ void tst_QProcess::getSetCheck() QProcess obj1; // ProcessChannelMode QProcess::readChannelMode() // void QProcess::setProcessChannelMode(ProcessChannelMode) -#if QT_DEPRECATED_SINCE(5, 13) - obj1.setProcessChannelMode(QProcess::ProcessChannelMode(QProcess::SeparateChannels)); - QCOMPARE(QProcess::ProcessChannelMode(QProcess::SeparateChannels), obj1.readChannelMode()); - obj1.setProcessChannelMode(QProcess::ProcessChannelMode(QProcess::MergedChannels)); - QCOMPARE(QProcess::ProcessChannelMode(QProcess::MergedChannels), obj1.readChannelMode()); - obj1.setProcessChannelMode(QProcess::ProcessChannelMode(QProcess::ForwardedChannels)); - QCOMPARE(QProcess::ProcessChannelMode(QProcess::ForwardedChannels), obj1.readChannelMode()); -#endif obj1.setProcessChannelMode(QProcess::ProcessChannelMode(QProcess::SeparateChannels)); QCOMPARE(QProcess::ProcessChannelMode(QProcess::SeparateChannels), obj1.processChannelMode()); obj1.setProcessChannelMode(QProcess::ProcessChannelMode(QProcess::MergedChannels)); @@ -403,11 +389,6 @@ void tst_QProcess::crashTest() QVERIFY(spy.isValid()); QVERIFY(spy2.isValid()); -#if QT_DEPRECATED_SINCE(5, 6) - QSignalSpy spy3(process.data(), static_cast<QProcessErrorSignal>(&QProcess::error)); - QVERIFY(spy3.isValid()); -#endif - QVERIFY(process->waitForFinished(30000)); QCOMPARE(spy.count(), 1); @@ -416,11 +397,6 @@ void tst_QProcess::crashTest() QCOMPARE(spy2.count(), 1); QCOMPARE(*static_cast<const QProcess::ExitStatus *>(spy2.at(0).at(1).constData()), QProcess::CrashExit); -#if QT_DEPRECATED_SINCE(5, 6) - QCOMPARE(spy3.count(), 1); - QCOMPARE(*static_cast<const QProcess::ProcessError *>(spy3.at(0).at(0).constData()), QProcess::Crashed); -#endif - QCOMPARE(process->exitStatus(), QProcess::CrashExit); // delete process; @@ -713,10 +689,6 @@ void tst_QProcess::readTimeoutAndThenCrash() qRegisterMetaType<QProcess::ProcessError>("QProcess::ProcessError"); QSignalSpy spy(&process, &QProcess::errorOccurred); QVERIFY(spy.isValid()); -#if QT_DEPRECATED_SINCE(5, 6) - QSignalSpy spy2(&process, static_cast<QProcessErrorSignal>(&QProcess::error)); - QVERIFY(spy2.isValid()); -#endif process.kill(); @@ -725,10 +697,6 @@ void tst_QProcess::readTimeoutAndThenCrash() QCOMPARE(spy.count(), 1); QCOMPARE(*static_cast<const QProcess::ProcessError *>(spy.at(0).at(0).constData()), QProcess::Crashed); -#if QT_DEPRECATED_SINCE(5, 6) - QCOMPARE(spy2.count(), 1); - QCOMPARE(*static_cast<const QProcess::ProcessError *>(spy2.at(0).at(0).constData()), QProcess::Crashed); -#endif } void tst_QProcess::waitForFinished() @@ -1416,6 +1384,9 @@ void tst_QProcess::spaceArgsTest() QFETCH(QStringList, args); QFETCH(QString, stringArgs); + auto splitString = QProcess::splitCommand(stringArgs); + QCOMPARE(args, splitString); + QStringList programs; programs << QString::fromLatin1("testProcessSpacesArgs/nospace") << QString::fromLatin1("testProcessSpacesArgs/one space") @@ -1442,28 +1413,6 @@ void tst_QProcess::spaceArgsTest() actual.removeFirst(); QCOMPARE(actual, args); - - if (program.contains(QLatin1Char(' '))) - program = QLatin1Char('"') + program + QLatin1Char('"'); - - if (!stringArgs.isEmpty()) - program += QLatin1Char(' ') + stringArgs; - - errorMessage.clear(); - process.start(program); - started = process.waitForStarted(5000); - if (!started) - errorMessage = startFailMessage(program, process); - - QVERIFY2(started, errorMessage.constData()); - QVERIFY(process.waitForFinished(5000)); - - actual = QString::fromLatin1(process.readAll()).split("|"); - QVERIFY(!actual.isEmpty()); - // not interested in the program name, it might be different. - actual.removeFirst(); - - QCOMPARE(actual, args); } } @@ -1518,7 +1467,7 @@ void tst_QProcess::exitCodeTest() { for (int i = 0; i < 255; ++i) { QProcess process; - process.start("testExitCodes/testExitCodes " + QString::number(i)); + process.start("testExitCodes/testExitCodes", {QString::number(i)}); QVERIFY(process.waitForFinished(5000)); QCOMPARE(process.exitCode(), i); QCOMPARE(process.error(), QProcess::UnknownError); @@ -1539,11 +1488,6 @@ void tst_QProcess::failToStart() QVERIFY(errorSpy.isValid()); QVERIFY(finishedSpy.isValid()); -#if QT_DEPRECATED_SINCE(5, 6) - QSignalSpy errorSpy2(&process, static_cast<QProcessErrorSignal>(&QProcess::error)); - QVERIFY(errorSpy2.isValid()); -#endif - // OS X and HP-UX have a really low default process limit (~100), so spawning // to many processes here will cause test failures later on. #if defined Q_OS_HPUX @@ -1557,9 +1501,6 @@ void tst_QProcess::failToStart() for (int j = 0; j < 8; ++j) { for (int i = 0; i < attempts; ++i) { QCOMPARE(errorSpy.count(), j * attempts + i); -#if QT_DEPRECATED_SINCE(5, 6) - QCOMPARE(errorSpy2.count(), j * attempts + i); -#endif process.start("/blurp"); switch (j) { @@ -1585,9 +1526,6 @@ void tst_QProcess::failToStart() QCOMPARE(process.error(), QProcess::FailedToStart); QCOMPARE(errorSpy.count(), j * attempts + i + 1); QCOMPARE(finishedSpy.count(), 0); -#if QT_DEPRECATED_SINCE(5, 6) - QCOMPARE(errorSpy2.count(), j * attempts + i + 1); -#endif int it = j * attempts + i + 1; @@ -1610,11 +1548,6 @@ void tst_QProcess::failToStartWithWait() QVERIFY(errorSpy.isValid()); QVERIFY(finishedSpy.isValid()); -#if QT_DEPRECATED_SINCE(5, 6) - QSignalSpy errorSpy2(&process, static_cast<QProcessErrorSignal>(&QProcess::error)); - QVERIFY(errorSpy2.isValid()); -#endif - for (int i = 0; i < 50; ++i) { process.start("/blurp", QStringList() << "-v" << "-debug"); process.waitForStarted(); @@ -1622,9 +1555,6 @@ void tst_QProcess::failToStartWithWait() QCOMPARE(process.error(), QProcess::FailedToStart); QCOMPARE(errorSpy.count(), i + 1); QCOMPARE(finishedSpy.count(), 0); -#if QT_DEPRECATED_SINCE(5, 6) - QCOMPARE(errorSpy2.count(), i + 1); -#endif } } @@ -1640,11 +1570,6 @@ void tst_QProcess::failToStartWithEventLoop() QVERIFY(errorSpy.isValid()); QVERIFY(finishedSpy.isValid()); -#if QT_DEPRECATED_SINCE(5, 6) - QSignalSpy errorSpy2(&process, static_cast<QProcessErrorSignal>(&QProcess::error)); - QVERIFY(errorSpy2.isValid()); -#endif - // The error signal may be emitted before start() returns connect(&process, &QProcess::errorOccurred, &loop, &QEventLoop::quit, Qt::QueuedConnection); @@ -1657,9 +1582,6 @@ void tst_QProcess::failToStartWithEventLoop() QCOMPARE(process.error(), QProcess::FailedToStart); QCOMPARE(errorSpy.count(), i + 1); QCOMPARE(finishedSpy.count(), 0); -#if QT_DEPRECATED_SINCE(5, 6) - QCOMPARE(errorSpy2.count(), i + 1); -#endif } } @@ -1667,8 +1589,7 @@ void tst_QProcess::failToStartEmptyArgs_data() { QTest::addColumn<int>("startOverload"); QTest::newRow("start(QString, QStringList, OpenMode)") << 0; - QTest::newRow("start(QString, OpenMode)") << 1; - QTest::newRow("start(OpenMode)") << 2; + QTest::newRow("start(OpenMode)") << 1; } void tst_QProcess::failToStartEmptyArgs() @@ -1679,19 +1600,12 @@ void tst_QProcess::failToStartEmptyArgs() QProcess process; QSignalSpy errorSpy(&process, static_cast<QProcessErrorSignal>(&QProcess::errorOccurred)); QVERIFY(errorSpy.isValid()); -#if QT_DEPRECATED_SINCE(5, 6) - QSignalSpy errorSpy2(&process, static_cast<QProcessErrorSignal>(&QProcess::error)); - QVERIFY(errorSpy2.isValid()); -#endif switch (startOverload) { case 0: process.start(QString(), QStringList(), QIODevice::ReadWrite); break; case 1: - process.start(QString(), QIODevice::ReadWrite); - break; - case 2: process.start(QIODevice::ReadWrite); break; default: @@ -1700,9 +1614,6 @@ void tst_QProcess::failToStartEmptyArgs() QVERIFY(!process.waitForStarted()); QCOMPARE(errorSpy.count(), 1); -#if QT_DEPRECATED_SINCE(5, 6) - QCOMPARE(errorSpy2.count(), 1); -#endif QCOMPARE(process.error(), QProcess::FailedToStart); } @@ -1938,21 +1849,12 @@ void tst_QProcess::waitForReadyReadForNonexistantProcess() QVERIFY(errorSpy.isValid()); QVERIFY(finishedSpy.isValid()); -#if QT_DEPRECATED_SINCE(5, 6) - QSignalSpy errorSpy2(&process, static_cast<QProcessErrorSignal>(&QProcess::error)); - QVERIFY(errorSpy2.isValid()); -#endif - QVERIFY(!process.waitForReadyRead()); // used to crash process.start("doesntexist"); QVERIFY(!process.waitForReadyRead()); QCOMPARE(errorSpy.count(), 1); QCOMPARE(errorSpy.at(0).at(0).toInt(), 0); QCOMPARE(finishedSpy.count(), 0); -#if QT_DEPRECATED_SINCE(5, 6) - QCOMPARE(errorSpy2.count(), 1); - QCOMPARE(errorSpy2.at(0).at(0).toInt(), 0); -#endif } void tst_QProcess::setStandardInputFile() @@ -2162,7 +2064,7 @@ void tst_QProcess::fileWriterProcess() QVERIFY(QFile::remove(fileName)); QProcess process; process.setWorkingDirectory(m_temporaryDir.path()); - process.start(binary, QIODevice::ReadWrite | QIODevice::Text); + process.start(binary, {}, QIODevice::ReadWrite | QIODevice::Text); process.write(stdinStr); process.closeWriteChannel(); while (process.bytesToWrite()) { @@ -2373,7 +2275,6 @@ void tst_QProcess::invalidProgramString_data() QTest::addColumn<QString>("programString"); QTest::newRow("null string") << QString(); QTest::newRow("empty string") << QString(""); - QTest::newRow("only blank string") << QString(" "); } void tst_QProcess::invalidProgramString() @@ -2384,17 +2285,10 @@ void tst_QProcess::invalidProgramString() qRegisterMetaType<QProcess::ProcessError>("QProcess::ProcessError"); QSignalSpy spy(&process, &QProcess::errorOccurred); QVERIFY(spy.isValid()); -#if QT_DEPRECATED_SINCE(5, 6) - QSignalSpy spy2(&process, static_cast<QProcessErrorSignal>(&QProcess::error)); - QVERIFY(spy2.isValid()); -#endif process.start(programString); QCOMPARE(process.error(), QProcess::FailedToStart); QCOMPARE(spy.count(), 1); -#if QT_DEPRECATED_SINCE(5, 6) - QCOMPARE(spy2.count(), 1); -#endif QVERIFY(!QProcess::startDetached(programString)); } @@ -2544,7 +2438,7 @@ void tst_QProcess::startStopStartStopBuffers() #endif process.setProcessChannelMode(QProcess::ProcessChannelMode(channelMode2)); - process.start("testProcessEcho2/testProcessEcho2", QIODevice::ReadWrite | QIODevice::Text); + process.start("testProcessEcho2/testProcessEcho2", {}, QIODevice::ReadWrite | QIODevice::Text); // the buffers should now be empty QCOMPARE(process.bytesToWrite(), qint64(0)); @@ -2593,72 +2487,5 @@ void tst_QProcess::processEventsInAReadyReadSlot() QVERIFY(process.waitForFinished()); } -#if QT_DEPRECATED_SINCE(5, 13) - -void tst_QProcess::restartProcessDeadlock_deprecated() -{ - // The purpose of this test is to detect whether restarting a - // process in the finished() connected slot causes a deadlock - // because of the way QProcessManager uses its locks. - QProcess process; - connect(&process, &QProcess::finished, this, &tst_QProcess::restartProcess); - - process.start("testProcessEcho/testProcessEcho"); - - QCOMPARE(process.write("", 1), qlonglong(1)); - QVERIFY(process.waitForFinished(5000)); - - QObject::disconnect(&process, &QProcess::finished, nullptr, nullptr); - - QCOMPARE(process.write("", 1), qlonglong(1)); - QVERIFY(process.waitForFinished(5000)); - QCOMPARE(process.exitStatus(), QProcess::NormalExit); - QCOMPARE(process.exitCode(), 0); -} - -void tst_QProcess::waitForReadyReadInAReadyReadSlot_deprecated() -{ - QProcess process; - connect(&process, &QIODevice::readyRead, this, &tst_QProcess::waitForReadyReadInAReadyReadSlotSlot); - connect(&process, &QProcess::finished, this, &tst_QProcess::exitLoopSlot); - bytesAvailable = 0; - - process.start("testProcessEcho/testProcessEcho"); - QVERIFY(process.waitForStarted(5000)); - - QSignalSpy spy(&process, &QProcess::readyRead); - QVERIFY(spy.isValid()); - process.write("foo"); - QTestEventLoop::instance().enterLoop(30); - QVERIFY(!QTestEventLoop::instance().timeout()); - - QCOMPARE(spy.count(), 1); - - process.disconnect(); - QVERIFY(process.waitForFinished(5000)); - QCOMPARE(process.exitStatus(), QProcess::NormalExit); - QCOMPARE(process.exitCode(), 0); - QVERIFY(process.bytesAvailable() > bytesAvailable); -} - -void tst_QProcess::finishProcessBeforeReadingDone_deprecated() -{ - QProcess process; - BlockOnReadStdOut blocker(&process); - QEventLoop loop; - connect(&process, &QProcess::finished, &loop, &QEventLoop::quit); - process.start("testProcessOutput/testProcessOutput"); - QVERIFY(process.waitForStarted()); - loop.exec(); - QStringList lines = QString::fromLocal8Bit(process.readAllStandardOutput()).split( - QRegularExpression(QStringLiteral("[\r\n]")), Qt::SkipEmptyParts); - QVERIFY(!lines.isEmpty()); - QCOMPARE(lines.last(), QStringLiteral("10239 -this is a number")); - QCOMPARE(process.exitStatus(), QProcess::NormalExit); - QCOMPARE(process.exitCode(), 0); -} - -#endif - QTEST_MAIN(tst_QProcess) #include "tst_qprocess.moc" |