diff options
author | Bartlomiej Moskal <bartlomiej.moskal@qt.io> | 2021-10-13 13:03:16 +0200 |
---|---|---|
committer | Bartlomiej Moskal <bartlomiej.moskal@qt.io> | 2021-10-21 08:23:22 +0000 |
commit | 6dd6342864806fcb28318da38a01ce21fcb4c96a (patch) | |
tree | d23cd7e664af966924eb7aad3f09b8ad045b2874 /src | |
parent | aa82d295c8954a5d04fd446abc7452f007594422 (diff) |
androidtestrunner: make sure that system-user is used
It happens on Android Automotive emulator, that output file is in other
directory.
According android spec [1]:
"If a default user isn't specified, each adb subcommand has a different
user. The best practice is to retrieve the user ID with am
get-current-user and then explicitly use --user <userId> for any
command that supports it."
That is the reason why output file can be found in
/data/user/USER_ID/PACKAGE_NAME directory.
Checking path related to current user was added as backup solution.
[1]https://source.android.com/devices/tech/admin/multi-user-testing
Pick-to: 6.2
Change-Id: Id7e6ddef74f4f20b7469a07bba6a71d3622c4e20
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/androidtestrunner/main.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/tools/androidtestrunner/main.cpp b/src/tools/androidtestrunner/main.cpp index 3e59148cff..aa3c390563 100644 --- a/src/tools/androidtestrunner/main.cpp +++ b/src/tools/androidtestrunner/main.cpp @@ -420,7 +420,16 @@ static bool pullFiles() QByteArray output; if (!execCommand(QStringLiteral("%1 shell run-as %2 cat files/output.%3") .arg(g_options.adbCommand, g_options.package, it.key()), &output)) { - return false; + // Cannot find output file. Check in path related to current user + QByteArray userId; + execCommand(QStringLiteral("%1 shell cmd activity get-current-user") + .arg(g_options.adbCommand), &userId); + const QString userIdSimplified(QString::fromUtf8(userId).simplified()); + if (!execCommand(QStringLiteral("%1 shell run-as %2 --user %3 cat files/output.%4") + .arg(g_options.adbCommand, g_options.package, userIdSimplified, it.key()), + &output)) { + return false; + } } auto checkerIt = g_options.checkFiles.find(it.key()); ret = ret && checkerIt != g_options.checkFiles.end() && checkerIt.value()(output); |