summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/io/qprocess/testForwarding/main.cpp
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-08-03 01:00:16 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2018-08-07 17:44:51 +0200
commit053e7cce79d4bef99ec85101b0d22bbb171072c5 (patch)
treec2059e82cccdea1fd0024c5942d1a834c28d39da /tests/auto/corelib/io/qprocess/testForwarding/main.cpp
parenta420d02538d28854914a6978c9637a0ddd652146 (diff)
parentf271dd8f960ad9f61697dfa57b26c4071441cadc (diff)
Merge remote-tracking branch 'origin/5.11' into dev
Conflicts: .qmake.conf src/corelib/doc/src/objectmodel/signalsandslots.qdoc src/plugins/platforms/cocoa/qcocoamenuloader.mm src/plugins/platforms/xcb/qxcbconnection.cpp src/plugins/platforms/xcb/qxcbconnection.h src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/plugins/platforms/xcb/qxcbwindow.cpp tests/auto/gui/image/qimage/tst_qimage.cpp Done-with: Gatis Paeglis <gatis.paeglis@qt.io> Change-Id: I9bd24ee9b00d4f26c8f344ce3970aa6e93935ff5
Diffstat (limited to 'tests/auto/corelib/io/qprocess/testForwarding/main.cpp')
-rw-r--r--tests/auto/corelib/io/qprocess/testForwarding/main.cpp57
1 files changed, 44 insertions, 13 deletions
diff --git a/tests/auto/corelib/io/qprocess/testForwarding/main.cpp b/tests/auto/corelib/io/qprocess/testForwarding/main.cpp
index b7367ff8c6..b5d56a1138 100644
--- a/tests/auto/corelib/io/qprocess/testForwarding/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testForwarding/main.cpp
@@ -27,15 +27,32 @@
****************************************************************************/
#include <QtCore/QCoreApplication>
+#include <QtCore/QDeadlineTimer>
#include <QtCore/QProcess>
+#include <QtCore/QTemporaryFile>
+#include <QtCore/QThread>
#include <stdlib.h>
+static bool waitForDoneFileWritten(const QString &filePath, int msecs = 30000)
+{
+ QDeadlineTimer t(msecs);
+ do {
+ QThread::msleep(250);
+ QFile file(filePath);
+ if (!file.open(QIODevice::ReadOnly))
+ continue;
+ if (file.readAll() == "That's all folks!")
+ return true;
+ } while (!t.hasExpired());
+ return false;
+}
+
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
- if (argc < 3)
+ if (argc < 4)
return 13;
QProcess process;
@@ -50,23 +67,37 @@ int main(int argc, char **argv)
if (process.inputChannelMode() != inmode)
return 11;
- process.start("testProcessEcho2/testProcessEcho2");
+ if (atoi(argv[3])) {
+ QTemporaryFile doneFile("testForwarding_XXXXXX.txt");
+ if (!doneFile.open())
+ return 12;
+ doneFile.close();
+
+ process.setProgram("testForwardingHelper/testForwardingHelper");
+ process.setArguments(QStringList(doneFile.fileName()));
+ if (!process.startDetached())
+ return 13;
+ if (!waitForDoneFileWritten(doneFile.fileName()))
+ return 14;
+ } else {
+ process.start("testProcessEcho2/testProcessEcho2");
- if (!process.waitForStarted(5000))
- return 2;
+ if (!process.waitForStarted(5000))
+ return 2;
- if (inmode == QProcess::ManagedInputChannel && process.write("forwarded") != 9)
- return 3;
+ if (inmode == QProcess::ManagedInputChannel && process.write("forwarded") != 9)
+ return 3;
- process.closeWriteChannel();
- if (!process.waitForFinished(5000))
- return 4;
+ process.closeWriteChannel();
+ if (!process.waitForFinished(5000))
+ return 4;
- if ((mode == QProcess::ForwardedOutputChannel || mode == QProcess::ForwardedChannels)
+ if ((mode == QProcess::ForwardedOutputChannel || mode == QProcess::ForwardedChannels)
&& !process.readAllStandardOutput().isEmpty())
- return 5;
- if ((mode == QProcess::ForwardedErrorChannel || mode == QProcess::ForwardedChannels)
+ return 5;
+ if ((mode == QProcess::ForwardedErrorChannel || mode == QProcess::ForwardedChannels)
&& !process.readAllStandardError().isEmpty())
- return 6;
+ return 6;
+ }
return 0;
}