Android: fix androidtestrunner passing when output file doesn't exist

Task-number: QTBUG-88508
Change-Id: If19d2b272b1760228b6a1e6e1af6db3bfbf0ec1e
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This commit is contained in:
Assam Boudjelthia 2020-11-25 19:05:16 +02:00
parent 6765dbf77a
commit 1365a1c7a7

View File

@ -415,10 +415,21 @@ static bool pullFiles()
bool ret = true;
for (auto it = g_options.outFiles.constBegin(); it != g_options.outFiles.end(); ++it) {
QByteArray output;
if (!execCommand(QStringLiteral("%1 shell run-as %2 cat files/output.%3")
// If the output file doesn't exist, adb still returns 0 exit code.
// Thus we need to explicitly check "echo $?".
if (!execCommand(QStringLiteral("%1 shell \'run-as %2 cat files/output.%3; echo $?\'")
.arg(g_options.adbCommand, g_options.package, it.key()), &output)) {
return false;
}
// Handle the exit code then remove it from the output.
bool ok;
int ret = output.right(3).toInt(&ok);
if (ret || !ok)
return false;
output.chop(3);
auto checkerIt = g_options.checkFiles.find(it.key());
ret = ret && checkerIt != g_options.checkFiles.end() && checkerIt.value()(output);
if (it.value() == QStringLiteral("-")){