iOS: Use command's exit code to check for failure

Change-Id: I8a565cab51b22bdf0d7d2ba274306479dc0397b1
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Vikas Pachdha
2017-01-23 15:13:19 +01:00
parent 68afbbce75
commit dfbe52efe3

View File

@@ -75,12 +75,10 @@ static bool runCommand(QString command, const QStringList &args, QByteArray *out
return resp.result == Utils::SynchronousProcessResponse::Finished;
}
static QByteArray runSimCtlCommand(QStringList args)
static bool runSimCtlCommand(QStringList args, QByteArray *output)
{
QByteArray output;
args.prepend(QStringLiteral("simctl"));
runCommand(QStringLiteral("xcrun"), args, &output);
return output;
return runCommand(QStringLiteral("xcrun"), args, output);
}
class SimulatorControlPrivate {
@@ -133,7 +131,8 @@ QList<Ios::Internal::IosDeviceType> SimulatorControl::availableSimulators()
static QList<IosDeviceType> getAvailableSimulators()
{
QList<IosDeviceType> availableDevices;
const QByteArray output = runSimCtlCommand({QLatin1String("list"), QLatin1String("-j"), QLatin1String("devices")});
QByteArray output;
runSimCtlCommand({QLatin1String("list"), QLatin1String("-j"), QLatin1String("devices")}, &output);
QJsonDocument doc = QJsonDocument::fromJson(output);
if (!doc.isNull()) {
const QJsonObject buildInfo = doc.object().value("devices").toObject();
@@ -219,7 +218,8 @@ SimulatorControlPrivate::SimDeviceInfo SimulatorControlPrivate::deviceInfo(const
SimDeviceInfo info;
bool found = false;
if (!simUdid.isEmpty()) {
const QByteArray output = runSimCtlCommand({QLatin1String("list"), QLatin1String("-j"), QLatin1String("devices")});
QByteArray output;
runSimCtlCommand({QLatin1String("list"), QLatin1String("-j"), QLatin1String("devices")}, &output);
QJsonDocument doc = QJsonDocument::fromJson(output);
if (!doc.isNull()) {
const QJsonObject buildInfo = doc.object().value(QStringLiteral("devices")).toObject();
@@ -331,14 +331,12 @@ void SimulatorControlPrivate::installApp(QFutureInterface<SimulatorControl::Resp
const QString &simUdid, const Utils::FileName &bundlePath)
{
QTC_CHECK(bundlePath.exists());
QByteArray output = runSimCtlCommand({QStringLiteral("install"), simUdid, bundlePath.toString()});
SimulatorControl::ResponseData response(simUdid);
response.success = output.isEmpty();
response.commandOutput = output;
if (!fi.isCanceled()) {
SimulatorControl::ResponseData response(simUdid);
response.success = runSimCtlCommand({QStringLiteral("install"), simUdid, bundlePath.toString()},
&response.commandOutput);
if (!fi.isCanceled())
fi.reportResult(response);
}
}
void SimulatorControlPrivate::launchApp(QFutureInterface<SimulatorControl::ResponseData> &fi,
@@ -365,11 +363,12 @@ void SimulatorControlPrivate::launchApp(QFutureInterface<SimulatorControl::Respo
args << extraArgument;
}
response.commandOutput = runSimCtlCommand(args);
const QByteArray pIdStr = response.commandOutput.trimmed().split(' ').last().trimmed();
bool validPid = false;
response.pID = pIdStr.toLongLong(&validPid);
response.success = validPid;
if (runSimCtlCommand(args, &response.commandOutput)) {
const QByteArray pIdStr = response.commandOutput.trimmed().split(' ').last().trimmed();
bool validPid = false;
response.pID = pIdStr.toLongLong(&validPid);
response.success = validPid;
}
}
if (!fi.isCanceled()) {