From 43b82bfc5fefbe0a904c04856fb195452d6732ac Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Tue, 24 Aug 2021 18:15:54 +0200 Subject: [PATCH] Add a test for waitingForStarted and waitingForFinished Change-Id: I2d38bb2d37a71aad6d762aa68f1f3b329a4fa302 Reviewed-by: hjk --- .../auto/utils/qtcprocess/tst_qtcprocess.cpp | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/auto/utils/qtcprocess/tst_qtcprocess.cpp b/tests/auto/utils/qtcprocess/tst_qtcprocess.cpp index f5d3eb39204..9f72f3f6095 100644 --- a/tests/auto/utils/qtcprocess/tst_qtcprocess.cpp +++ b/tests/auto/utils/qtcprocess/tst_qtcprocess.cpp @@ -48,6 +48,7 @@ const char kExitCodeSubProcessCode[] = "QTC_TST_QTCPROCESS_EXITCODE_CODE"; const char kRunBlockingStdOutSubProcessMagicWord[] = "42"; const char kRunBlockingStdOutSubProcessWithEndl[] = "QTC_TST_QTCPROCESS_RUNBLOCKINGSTDOUT_WITHENDL"; const char kLineCallback[] = "QTC_TST_QTCPROCESS_LINECALLBACK"; +const char kTestProcess[] = "QTC_TST_TEST_PROCESS"; // Expect ending lines detected at '|': const char lineCallbackData[] = @@ -86,6 +87,12 @@ static void lineCallbackMain() exit(0); } +static void testProcessSubProcessMain() +{ + std::cout << "Test process successfully executed." << std::endl; + exit(0); +} + class MacroMapExpander : public AbstractMacroExpander { public: virtual bool resolveMacro(const QString &name, QString *ret, QSet &seen) @@ -133,6 +140,7 @@ private slots: void runBlockingStdOut(); void lineCallback(); void lineCallbackIntern(); + void waitForStartAndFinished(); void cleanupTestCase(); @@ -158,6 +166,8 @@ void tst_QtcProcess::initTestCase() blockingStdOutSubProcessMain(); if (qEnvironmentVariableIsSet(kLineCallback)) lineCallbackMain(); + if (qEnvironmentVariableIsSet(kTestProcess)) + testProcessSubProcessMain(); homeStr = QLatin1String("@HOME@"); home = QDir::homePath(); @@ -947,6 +957,25 @@ void tst_QtcProcess::lineCallbackIntern() QCOMPARE(lineNumber, lines.size()); } +void tst_QtcProcess::waitForStartAndFinished() +{ + Environment env = Environment::systemEnvironment(); + env.set(kTestProcess, {}); + QStringList args = QCoreApplication::arguments(); + const QString binary = args.takeFirst(); + const CommandLine command(FilePath::fromString(binary), args); + + QtcProcess process; + process.setCommand(command); + process.setEnvironment(env); + process.start(); + QThread::msleep(1000); // long enough for process to finish + QVERIFY(process.waitForStarted()); + QVERIFY(process.waitForFinished()); + QVERIFY(!process.waitForFinished()); + QCOMPARE(process.exitCode(), 0); +} + QTEST_MAIN(tst_QtcProcess) #include "tst_qtcprocess.moc"