Fixed
Status Update
Comments
gg...@google.com <gg...@google.com>
gg...@google.com <gg...@google.com> #2
Can you please attach the full logcat output to this bug, so we can take a look?
[Deleted User] <[Deleted User]> #3
Yes of course. Here the full logcat. Tested on multiple devices for example Moto G5, Samsung A5 and Nexus 5 (but custom rom)
ay...@blink22.com <ay...@blink22.com> #4
I've tested it today also on the Nexus 5X (Dev Preview 4) and Nexus 5 without custom rom.
be...@gmail.com <be...@gmail.com> #5
Thanks! I will try to see if I can reproduce it on a device. What's interesting though is that the permission seems to be already granted to the package. If you look at your log cat output, right before the exception there is this line: "I/GrantPermissionCallable: Permission: android.permission.WRITE_EXTERNAL_STORAGE is already granted!". What GPC does is to verify that the permission was actually granted for the target context (app under test). One thing that would be interesting if you could run "adb shell pm dump <package> | grep permission" after you ran the tests and paste the outputs here. Thanks.
so...@gmail.com <so...@gmail.com> #6
Hi sorry for the late response:
I get the following respone from the command:
requested permissions:
android.permission.INTERNET
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_EXTERNAL_STORAGE
android.permission.RECORD_AUDIO
android.permission.SET_ALARM
android.permission.RECEIVE_BOOT_COMPLETED
android.permission.WAKE_LOCK
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_FINE_LOCATION
install permissions:
android.permission.RECEIVE_BOOT_COMPLETED: granted=true
android.permission.INTERNET: granted=true
android.permission.ACCESS_NETWORK_STATE: granted=true
android.permission.WAKE_LOCK: granted=true
runtime permissions:
android.permission.WRITE_EXTERNAL_STORAGE: granted=true
android.permission.RECORD_AUDIO: granted=true
ACTIVITY MANAGER URI PERMISSIONS (dumpsys activity permissions)
time="26.9.2017, 18:55" type=MOVE_TO_FOREGROUND package=com.google.android.packageinstaller class=com.android.packageinstaller.permission.ui.ManagePermissionsActivity
time="26.9.2017, 18:56" type=MOVE_TO_BACKGROUND package=com.google.android.packageinstaller class=com.android.packageinstaller.permission.ui.ManagePermissionsActivity
time="26.9.2017, 19:14" type=MOVE_TO_FOREGROUND package=com.google.android.packageinstaller class=com.android.packageinstaller.permission.ui.GrantPermissionsActivity
time="26.9.2017, 19:14" type=MOVE_TO_BACKGROUND package=com.google.android.packageinstaller class=com.android.packageinstaller.permission.ui.GrantPermissionsActivity
time="26.9.2017, 19:20" type=MOVE_TO_FOREGROUND package=com.google.android.packageinstaller class=com.android.packageinstaller.permission.ui.GrantPermissionsActivity
time="26.9.2017, 19:20" type=MOVE_TO_BACKGROUND package=com.google.android.packageinstaller class=com.android.packageinstaller.permission.ui.GrantPermissionsActivity
So it seems that the permission is granted. But I get all the time the exception.
I get the following respone from the command:
requested permissions:
android.permission.INTERNET
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_EXTERNAL_STORAGE
android.permission.RECORD_AUDIO
android.permission.SET_ALARM
android.permission.RECEIVE_BOOT_COMPLETED
android.permission.WAKE_LOCK
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_FINE_LOCATION
install permissions:
android.permission.RECEIVE_BOOT_COMPLETED: granted=true
android.permission.INTERNET: granted=true
android.permission.ACCESS_NETWORK_STATE: granted=true
android.permission.WAKE_LOCK: granted=true
runtime permissions:
android.permission.WRITE_EXTERNAL_STORAGE: granted=true
android.permission.RECORD_AUDIO: granted=true
ACTIVITY MANAGER URI PERMISSIONS (dumpsys activity permissions)
time="26.9.2017, 18:55" type=MOVE_TO_FOREGROUND package=com.google.android.packageinstaller class=com.android.packageinstaller.permission.ui.ManagePermissionsActivity
time="26.9.2017, 18:56" type=MOVE_TO_BACKGROUND package=com.google.android.packageinstaller class=com.android.packageinstaller.permission.ui.ManagePermissionsActivity
time="26.9.2017, 19:14" type=MOVE_TO_FOREGROUND package=com.google.android.packageinstaller class=com.android.packageinstaller.permission.ui.GrantPermissionsActivity
time="26.9.2017, 19:14" type=MOVE_TO_BACKGROUND package=com.google.android.packageinstaller class=com.android.packageinstaller.permission.ui.GrantPermissionsActivity
time="26.9.2017, 19:20" type=MOVE_TO_FOREGROUND package=com.google.android.packageinstaller class=com.android.packageinstaller.permission.ui.GrantPermissionsActivity
time="26.9.2017, 19:20" type=MOVE_TO_BACKGROUND package=com.google.android.packageinstaller class=com.android.packageinstaller.permission.ui.GrantPermissionsActivity
So it seems that the permission is granted. But I get all the time the exception.
ga...@google.com <ga...@google.com> #7
I experienced the same issue using Rules 1.0.1 on Nexus 5X running Android 8.0
I found a workaround for this issue where I also grant the 'Manifest.permission.READ_EXTERNAL_STORAGE' permission and then things work as expected.
So instead of:
GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE);
I use:
GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE);
The issue could be (this is just my guess):
'GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE)' only grants write permission. However, when requesting the write permission using the Android system dialog both the write and read permissions are granted. This is also the expected behaviour as described in the Manifest.permission class:
https://developer.android.com/reference/android/Manifest.permission.html#READ_EXTERNAL_STORAGE
"Any app that declares the WRITE_EXTERNAL_STORAGE permission is implicitly granted this permission."
I found a workaround for this issue where I also grant the 'Manifest.permission.READ_EXTERNAL_STORAGE' permission and then things work as expected.
So instead of:
GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE);
I use:
GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE);
The issue could be (this is just my guess):
'GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE)' only grants write permission. However, when requesting the write permission using the Android system dialog both the write and read permissions are granted. This is also the expected behaviour as described in the Manifest.permission class:
"Any app that declares the WRITE_EXTERNAL_STORAGE permission is implicitly granted this permission."
nk...@google.com <nk...@google.com> #8
Experienced same problem after updating hockey sdk to version 5.0.3.
After investigating I found that hockey sdk declares following in AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
While my app main library just defines following in AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Fixed by changing main library manifest to following:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:node="replace" />
After investigating I found that hockey sdk declares following in AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
While my app main library just defines following in AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Fixed by changing main library manifest to following:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:node="replace" />
ay...@blink22.com <ay...@blink22.com> #9
Experience same problem with Manifest.permission.READ_CONTACTS and android.Manifest.permission.WRITE_CONTACTS permission
nk...@google.com <nk...@google.com>
ju...@gmail.com <ju...@gmail.com> #10
Fix will be available in 1.0.2-alpha2
nk...@google.com <nk...@google.com> #11
I am also experiencing the same issue with Manifest.permission.ACCESS_FINE_LOCATION
nk...@google.com <nk...@google.com> #12
How do I import 1.0.2-alpha2 into my project?
[Deleted User] <[Deleted User]> #13
When should we expect a build of 1.0.2-alpha2 with this fix?
nk...@google.com <nk...@google.com> #14
alpha2 is not released just yet
ga...@google.com <ga...@google.com>
[Deleted User] <[Deleted User]> #15
I tested on beta1 for ACCESS_FINE_LOCATION and it still does not work.
ga...@google.com <ga...@google.com> #16
Any progress on this issue?
ga...@google.com <ga...@google.com> #17
Same problem here trying to grant access WRITE_EXTERNAL_STORAGE with latest 1.0.2
co...@gmail.com <co...@gmail.com> #18
The API isn't working for me too.
I get this in the logcat everytime I try to run my test: "junit.framework.AssertionFailedError: Failed to grant permissions, see logcat for details"
And I have done things very simple and straigt forward
@RunWith(AndroidJUnit4.class)
public class MainTest {
@Rule
public GrantPermissionRule grantPermissionRule = GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE);
private Context context;
@Before
public void setup() {
context = InstrumentationRegistry.getTargetContext();
}
}
I get this in the logcat everytime I try to run my test: "junit.framework.AssertionFailedError: Failed to grant permissions, see logcat for details"
And I have done things very simple and straigt forward
@RunWith(AndroidJUnit4.class)
public class MainTest {
@Rule
public GrantPermissionRule grantPermissionRule = GrantPermissionRule.grant(Manifest.permission.WRITE_EXTERNAL_STORAGE);
private Context context;
@Before
public void setup() {
context = InstrumentationRegistry.getTargetContext();
}
}
sl...@google.com <sl...@google.com> #19
This one fixed it for me. It works only with replace node for me:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="replace"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="replace" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="replace"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="replace" />
is...@gmail.com <is...@gmail.com> #20
I am also experiencing the same issue with rules:1.0.2 while testing a custom view on an emulated Nexus 5 API 27.
Build: 3.4, AI-183.5429.30.34.5452501, 201904100040,
AI-183.5429.30.34.5452501, JRE 1.8.0_152-release-1343-b01x64 JetBrains s.r.o, OS Mac OS X(x86_64) v10.14.4, screens 1680x1050
Android Gradle Plugin: 3.4.0
Gradle: 5.2
Build: 3.4, AI-183.5429.30.34.5452501, 201904100040,
AI-183.5429.30.34.5452501, JRE 1.8.0_152-release-1343-b01x64 JetBrains s.r.o, OS Mac OS X(x86_64) v10.14.4, screens 1680x1050
Android Gradle Plugin: 3.4.0
Gradle: 5.2
do...@gmail.com <do...@gmail.com> #21
i am still experience same issue.
here's my config
"androidx.test:core:1.3.0",
"androidx.test:rules:1.3.0",
here's my config
"androidx.test:core:1.3.0",
"androidx.test:rules:1.3.0",
ga...@google.com <ga...@google.com> #22
Any update on this issue?
I was facing the same issue, the following code won't work on Android R physical device:
@Rule
public GrantPermissionRule rule = GrantPermissionRule.grant(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.WRITE_EXTERNAL_STORAGE
);
do...@gmail.com <do...@gmail.com> #23
tools:node="replace" adding this to permission on manifest worked for me.
ga...@google.com <ga...@google.com> #24
This bug has not been updated in over a year. Please reopen if this is still an issue or requires addition inspection.
do...@gmail.com <do...@gmail.com> #25
I cannot show you the code of my main project but this is a test project that mimics the same problem in my main project.
If I use orchestrator:1.0.1 (line 112), I can run the test cases with the tasks "createProductionDebugCoverageReport" (./gradlew createProductionDebugCoverageReport).
If I use orchestrator:1.0.2 without changing anything in the test cases, it throws me an error as I mentioned before.
Let me know if you need more information.
If I use orchestrator:1.0.1 (line 112), I can run the test cases with the tasks "createProductionDebugCoverageReport" (./gradlew createProductionDebugCoverageReport).
If I use orchestrator:1.0.2 without changing anything in the test cases, it throws me an error as I mentioned before.
Let me know if you need more information.
ga...@google.com <ga...@google.com> #26
As #17 says, you need to use the Android Gradle plugin 3.2.0-alpha17 or higher. This fix is not ported to 3.1 versions of the plugin. Updating your sample project to use 3.2.0-beta04 fixes the issue.
do...@gmail.com <do...@gmail.com> #27
AHHH.. my bad!! I thought it was talking about the gradle version.
It fixed this problem but had a different problem. I will open a new post if I don't find a fix for that.
Thanks man.
It fixed this problem but had a different problem. I will open a new post if I don't find a fix for that.
Thanks man.
sh...@gmail.com <sh...@gmail.com> #28
Hi
I have used: gradle: 3.2.0-alpha17, test:runner: 1.0.2
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
testInstrumentationRunnerArguments clearPackageData: 'true'
execution 'ANDROID_TEST_ORCHESTRATOR'
androidTestUtil 'com.android.support.test:orchestrator:1.0.1'
Jacaoco setup -
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {
reports {
xml.enabled = true
html.enabled = true
}
fileFilter ="***"
def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: "$buildDir", includes: [
"jacoco/testDebugUnitTest.exec",
"outputs/code-coverage/connected/*coverage.ec "
----
allprojects {
apply plugin: "jacoco"
jacoco {
toolVersion = "0.8.0"
}
-----
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0-alpha17'
classpath "org.jacoco:org.jacoco.core:0.8.0"
-----
I am getting the Following Error
C:\Development\Projects\BreathMapper\Workspace\Source\BreatheMapper\app\libs\adobeMobileLibrary-4.13.5.jar
Warning:Type `com.google.android.gms.wearable.PutDataMapRequest` was not found, it is required for default or static interface methods desugaring of `void com.adobe.mobile.ConfigSynchronizer.syncData(java.lang.String, com.google.android.gms.wearable.DataMap)`
Warning:Type `com.google.android.gms.wearable.DataMapItem` was not found, it is required for default or static interface methods desugaring of `void com.adobe.mobile.ConfigSynchronizer.restoreConfig(com.google.android.gms.wearable.DataItem)`
Warning:Type `com.google.android.gms.wearable.PutDataMapRequest` was not found, it is required for default or static interface methods desugaring of `com.adobe.mobile.WearableDataResponse com.adobe.mobile.WearableDataConnection.send(com.adobe.mobile.WearableDataRequest)`
Warning:Type `com.google.android.gms.wearable.DataMapItem` was not found, it is required for default or static interface methods desugaring of `void com.adobe.mobile.WearableDataConnection.onDataChanged(com.google.android.gms.wearable.DataEventBuffer)`
Warning:Type `com.google.android.gms.wearable.Asset` was not found, it is required for default or static interface methods desugaring of `com.google.android.gms.wearable.DataMap com.adobe.mobile.WearableDataRequest$Cache.handle(android.content.Context)`
Warning:Interface `com.google.android.gms.common.api.GoogleApiClient$OnConnectionFailedListener` not found. It's needed to make sure desugaring of `com.adobe.mobile.WearableDataConnection` is correct. Desugaring will assume that this interface has no default method.
Warning:Interface `com.google.android.gms.wearable.DataApi$DataListener` not found. It's needed to make sure desugaring of `com.adobe.mobile.WearableDataConnection` is correct. Desugaring will assume that this interface has no default method.
C:\Users\xx\.gradle\caches\transforms-1\files-1.1\runtime-1.1.1.aar\be15bb0ad7b260a4de5c6f23e94be8e7\jars\classes.jar
Warning:Type `android.arch.paging.PositionalDataSource` was not found, it is required for default or static interface methods desugaring of `boolean android.arch.persistence.room.paging.LimitOffsetDataSource.isInvalid()`
C:\Users\xx\.gradle\caches\transforms-1\files-1.1\espresso-core-3.0.2.aar\f93273e747e9ce9e35d6f1173bb60539\jars\classes.jar
Warning:Type `sun.misc.Unsafe` was not found, it is required for default or static interface methods desugaring of `sun.misc.Unsafe android.support.test.espresso.core.internal.deps.guava.cache.Striped64.getUnsafe()`
Warning:Type `sun.misc.Unsafe` was not found, it is required for default or static interface methods desugaring of `void android.support.test.espresso.core.internal.deps.guava.util.concurrent.AbstractFuture$UnsafeAtomicHelper.<clinit>()`
Error:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 warning
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:createDebugAndroidTestCoverageReport'.
> java.io.IOException: No coverage data to process in directory 'C:\Development\Projects\BreathMapper\Workspace\Source\BreatheMapper\app\build\outputs\code-coverage\connected'
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help athttps://help.gradle.org
BUILD FAILED in 4m 56s
I have used: gradle: 3.2.0-alpha17, test:runner: 1.0.2
distributionUrl=https\://
testInstrumentationRunnerArguments clearPackageData: 'true'
execution 'ANDROID_TEST_ORCHESTRATOR'
androidTestUtil 'com.android.support.test:orchestrator:1.0.1'
Jacaoco setup -
task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {
reports {
xml.enabled = true
html.enabled = true
}
fileFilter ="***"
def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter)
def mainSrc = "${project.projectDir}/src/main/java"
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: "$buildDir", includes: [
"jacoco/testDebugUnitTest.exec",
"outputs/code-coverage/connected/*
----
allprojects {
apply plugin: "jacoco"
jacoco {
toolVersion = "0.8.0"
}
-----
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0-alpha17'
classpath "org.jacoco:org.jacoco.core:0.8.0"
-----
I am getting the Following Error
C:\Development\Projects\BreathMapper\Workspace\Source\BreatheMapper\app\libs\adobeMobileLibrary-4.13.5.jar
Warning:Type `com.google.android.gms.wearable.PutDataMapRequest` was not found, it is required for default or static interface methods desugaring of `void com.adobe.mobile.ConfigSynchronizer.syncData(java.lang.String, com.google.android.gms.wearable.DataMap)`
Warning:Type `com.google.android.gms.wearable.DataMapItem` was not found, it is required for default or static interface methods desugaring of `void com.adobe.mobile.ConfigSynchronizer.restoreConfig(com.google.android.gms.wearable.DataItem)`
Warning:Type `com.google.android.gms.wearable.PutDataMapRequest` was not found, it is required for default or static interface methods desugaring of `com.adobe.mobile.WearableDataResponse com.adobe.mobile.WearableDataConnection.send(com.adobe.mobile.WearableDataRequest)`
Warning:Type `com.google.android.gms.wearable.DataMapItem` was not found, it is required for default or static interface methods desugaring of `void com.adobe.mobile.WearableDataConnection.onDataChanged(com.google.android.gms.wearable.DataEventBuffer)`
Warning:Type `com.google.android.gms.wearable.Asset` was not found, it is required for default or static interface methods desugaring of `com.google.android.gms.wearable.DataMap com.adobe.mobile.WearableDataRequest$Cache.handle(android.content.Context)`
Warning:Interface `com.google.android.gms.common.api.GoogleApiClient$OnConnectionFailedListener` not found. It's needed to make sure desugaring of `com.adobe.mobile.WearableDataConnection` is correct. Desugaring will assume that this interface has no default method.
Warning:Interface `com.google.android.gms.wearable.DataApi$DataListener` not found. It's needed to make sure desugaring of `com.adobe.mobile.WearableDataConnection` is correct. Desugaring will assume that this interface has no default method.
C:\Users\xx\.gradle\caches\transforms-1\files-1.1\runtime-1.1.1.aar\be15bb0ad7b260a4de5c6f23e94be8e7\jars\classes.jar
Warning:Type `android.arch.paging.PositionalDataSource` was not found, it is required for default or static interface methods desugaring of `boolean android.arch.persistence.room.paging.LimitOffsetDataSource.isInvalid()`
C:\Users\xx\.gradle\caches\transforms-1\files-1.1\espresso-core-3.0.2.aar\f93273e747e9ce9e35d6f1173bb60539\jars\classes.jar
Warning:Type `sun.misc.Unsafe` was not found, it is required for default or static interface methods desugaring of `sun.misc.Unsafe android.support.test.espresso.core.internal.deps.guava.cache.Striped64.getUnsafe()`
Warning:Type `sun.misc.Unsafe` was not found, it is required for default or static interface methods desugaring of `void android.support.test.espresso.core.internal.deps.guava.util.concurrent.AbstractFuture$UnsafeAtomicHelper.<clinit>()`
Error:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 warning
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:createDebugAndroidTestCoverageReport'.
> java.io.IOException: No coverage data to process in directory 'C:\Development\Projects\BreathMapper\Workspace\Source\BreatheMapper\app\build\outputs\code-coverage\connected'
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at
BUILD FAILED in 4m 56s
ga...@google.com <ga...@google.com> #29
Re #28:
Can you please file a new issue, and upload a sample project that reproduces it?
Can you please file a new issue, and upload a sample project that reproduces it?
sh...@gmail.com <sh...@gmail.com> #30
Continued Re #28
Full Error log
C:\Development\Projects\MyTest\Workspace\Source\MyTest\app\build\outputs\androidTest-results\connected\TEST-Galaxy_Nexus_API_26(AVD) - 8.0.0-app-.xml. Total tests 48, passed 48,
06:04:55 V/ddms: execute 'CLASSPATH=$(pm path android.support.test.services) app_process / android.support.test.services.shellexecutor.ShellMain am instrument -r -w -e targetInstrumentation com.vn.test.test/android.support.test.runner.AndroidJUnitRunner --no_window_animation -e coverageFilePath /data/data/com.vn.test/coverage_data/ -e coverage true android.support.test.orchestrator/android.support.test.orchestrator.AndroidTestOrchestrator' on 'emulator-5556' : EOF hit. Read: -1
06:04:55 V/ddms: execute: returning
06:04:55 V/ddms: execute: running echo 'for i in $(run-as com.vn.test ls /data/data/com.vn.test/coverage_data/); do run-as com.vn.test cat /data/data/com.vn.test/coverage_data/$i > /data/local/tmp/com.vn.test-coverage_data/$i; done' > /data/local/tmp/com.vn.test-coverage_data/copyFromUser.sh
06:04:55 V/ddms: execute 'echo 'for i in $(run-as com.vn.test ls /data/data/com.vn.test/coverage_data/); do run-as com.vn.test cat /data/data/com.vn.test/coverage_data/$i > /data/local/tmp/com.vn.test-coverage_data/$i; done' > /data/local/tmp/com.vn.test-coverage_data/copyFromUser.sh' on 'emulator-5556' : EOF hit. Read: -1
06:04:55 V/ddms: execute: returning
06:04:55 V/ddms: execute: running sh /data/local/tmp/com.vn.test-coverage_data/copyFromUser.sh
06:04:55 V/ddms: execute 'sh /data/local/tmp/com.vn.test-coverage_data/copyFromUser.sh' on 'emulator-5556' : EOF hit. Read: -1
06:04:55 V/ddms: execute: returning
06:04:55 V/ddms: execute: running ls /data/local/tmp/com.vn.test-coverage_data > /data/local/tmp/com.vn.test-coverage_data/paths.txt
06:04:55 V/ddms: execute 'ls /data/local/tmp/com.vn.test-coverage_data > /data/local/tmp/com.vn.test-coverage_data/paths.txt' on 'emulator-5556' : EOF hit. Read: -1
06:04:55 V/ddms: execute: returning
06:04:55 D/paths.txt: Downloading paths.txt from device 'emulator-5556'
06:04:55 D/Device: Downloading file from device 'emulator-5556'
06:04:55 V/ddms: execute: running rm -r /data/local/tmp/com.vn.test-coverage_data
06:04:55 V/ddms: execute 'rm -r /data/local/tmp/com.vn.test-coverage_data' on 'emulator-5556' : EOF hit. Read: -1
06:04:55 V/ddms: execute: returning
06:04:55 V/ddms: execute: running pm uninstall com.vn.test.test
06:04:55 V/ddms: execute 'pm uninstall com.vn.test.test' on 'emulator-5556' : EOF hit. Read: -1
06:04:55 V/ddms: execute: returning
06:04:55 V/ddms: execute: running pm uninstall com.vn.test
06:04:56 V/ddms: execute 'pm uninstall com.vn.test' on 'emulator-5556' : EOF hit. Read: -1
06:04:56 V/ddms: execute: returning
:app:createDebugAndroidTestCoverageReport FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:createDebugAndroidTestCoverageReport'.
> java.io.IOException: No coverage data to process in directory 'C:\Development\Projects\MyTest\Workspace\Source\Test\app\build\outputs\code-coverage\connected'
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help athttps://help.gradle.org
BUILD FAILED in 3m 14s
Full Error log
C:\Development\Projects\MyTest\Workspace\Source\MyTest\app\build\outputs\androidTest-results\connected\TEST-Galaxy_Nexus_API_26(AVD) - 8.0.0-app-.xml. Total tests 48, passed 48,
06:04:55 V/ddms: execute 'CLASSPATH=$(pm path android.support.test.services) app_process / android.support.test.services.shellexecutor.ShellMain am instrument -r -w -e targetInstrumentation com.vn.test.test/android.support.test.runner.AndroidJUnitRunner --no_window_animation -e coverageFilePath /data/data/com.vn.test/coverage_data/ -e coverage true android.support.test.orchestrator/android.support.test.orchestrator.AndroidTestOrchestrator' on 'emulator-5556' : EOF hit. Read: -1
06:04:55 V/ddms: execute: returning
06:04:55 V/ddms: execute: running echo 'for i in $(run-as com.vn.test ls /data/data/com.vn.test/coverage_data/); do run-as com.vn.test cat /data/data/com.vn.test/coverage_data/$i > /data/local/tmp/com.vn.test-coverage_data/$i; done' > /data/local/tmp/com.vn.test-coverage_data/copyFromUser.sh
06:04:55 V/ddms: execute 'echo 'for i in $(run-as com.vn.test ls /data/data/com.vn.test/coverage_data/); do run-as com.vn.test cat /data/data/com.vn.test/coverage_data/$i > /data/local/tmp/com.vn.test-coverage_data/$i; done' > /data/local/tmp/com.vn.test-coverage_data/copyFromUser.sh' on 'emulator-5556' : EOF hit. Read: -1
06:04:55 V/ddms: execute: returning
06:04:55 V/ddms: execute: running sh /data/local/tmp/com.vn.test-coverage_data/copyFromUser.sh
06:04:55 V/ddms: execute 'sh /data/local/tmp/com.vn.test-coverage_data/copyFromUser.sh' on 'emulator-5556' : EOF hit. Read: -1
06:04:55 V/ddms: execute: returning
06:04:55 V/ddms: execute: running ls /data/local/tmp/com.vn.test-coverage_data > /data/local/tmp/com.vn.test-coverage_data/paths.txt
06:04:55 V/ddms: execute 'ls /data/local/tmp/com.vn.test-coverage_data > /data/local/tmp/com.vn.test-coverage_data/paths.txt' on 'emulator-5556' : EOF hit. Read: -1
06:04:55 V/ddms: execute: returning
06:04:55 D/paths.txt: Downloading paths.txt from device 'emulator-5556'
06:04:55 D/Device: Downloading file from device 'emulator-5556'
06:04:55 V/ddms: execute: running rm -r /data/local/tmp/com.vn.test-coverage_data
06:04:55 V/ddms: execute 'rm -r /data/local/tmp/com.vn.test-coverage_data' on 'emulator-5556' : EOF hit. Read: -1
06:04:55 V/ddms: execute: returning
06:04:55 V/ddms: execute: running pm uninstall com.vn.test.test
06:04:55 V/ddms: execute 'pm uninstall com.vn.test.test' on 'emulator-5556' : EOF hit. Read: -1
06:04:55 V/ddms: execute: returning
06:04:55 V/ddms: execute: running pm uninstall com.vn.test
06:04:56 V/ddms: execute 'pm uninstall com.vn.test' on 'emulator-5556' : EOF hit. Read: -1
06:04:56 V/ddms: execute: returning
:app:createDebugAndroidTestCoverageReport FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:createDebugAndroidTestCoverageReport'.
> java.io.IOException: No coverage data to process in directory 'C:\Development\Projects\MyTest\Workspace\Source\Test\app\build\outputs\code-coverage\connected'
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at
BUILD FAILED in 3m 14s
sh...@gmail.com <sh...@gmail.com> #31
@ Re #29:
I have uploaded some more log detail.
I have uploaded some more log detail.
sh...@gmail.com <sh...@gmail.com> #32
Re #29
My setup was working fine with earlier gradle plugin 3.1.2 . with distributionUrl=gradle-4.4-all.zip (.ec file was generating but only coverage data is incomplete ).
But I tried to implement the solution provided in #20
gradle plugin - gradle:3.2.0-alpha17' with distributionUrl=gradle-4.6-all.zip But getting #30 error an .ec file not generating
My setup was working fine with earlier gradle plugin 3.1.2 . with distributionUrl=gradle-4.4-all.zip (.ec file was generating but only coverage data is incomplete ).
But I tried to implement the solution provided in #20
gradle plugin - gradle:3.2.0-alpha17' with distributionUrl=gradle-4.6-all.zip But getting #30 error an .ec file not generating
ga...@google.com <ga...@google.com> #33
Re #32: Please file a new issue, as it looks different than the original one. We can continue the discussion there.
ba...@gmail.com <ba...@gmail.com> #35
Hi,
How to test the private methods and greendao database CRUD operations in android robolectric test case.
How to get private method code coverage in android jacoco library using
How to test the private methods and greendao database CRUD operations in android robolectric test case.
How to get private method code coverage in android jacoco library using
sl...@gmail.com <sl...@gmail.com> #36
I can confirm this is still a problem...
> java.io.IOException: No coverage data to process in directories [[/Users/msh/git/wine-scanner-android/app/build/outputs/code_coverage/worldDebugAndroidTest/connected]]
Only happens when enabling ANDROIDX_TEST_ORCHESTRATOR
> java.io.IOException: No coverage data to process in directories [[/Users/msh/git/wine-scanner-android/app/build/outputs/code_coverage/worldDebugAndroidTest/connected]]
Only happens when enabling ANDROIDX_TEST_ORCHESTRATOR
ga...@google.com <ga...@google.com> #37
Re #36:
Can you please share a project the reproduces the issue?
Can you please share a project the reproduces the issue?
sl...@gmail.com <sl...@gmail.com> #38
Not really as its the project at the company where I work. Its a huge project so not small task to maintain - hence the need for test coverage...
I've tried trouble shooting most of the day and so far no luck. I really have no idea where to start looking.
Not sure if it will help but the complete output when running ./gradlew createWorldDebugCoverageReport is attached.
I've tried against an emulator (genymotion) as well as a real device - same result.
I guess the next logical step is to setup a basic project and see if that has the same problem...
I've tried trouble shooting most of the day and so far no luck. I really have no idea where to start looking.
Not sure if it will help but the complete output when running ./gradlew createWorldDebugCoverageReport is attached.
I've tried against an emulator (genymotion) as well as a real device - same result.
I guess the next logical step is to setup a basic project and see if that has the same problem...
ga...@google.com <ga...@google.com> #39
I've opened a new issue, https://issuetracker.google.com/123987001 , because this differs from the original problem in this issue.
bi...@gmail.com <bi...@gmail.com> #40
Env. androidx.test:orchestrator:1.1.1
Still error
Execution failed for task ':app:createDebugAndroidTestCoverageReport'.
> java.io.IOException: No coverage data to process in directories /app/build/outputs/code_coverage/debugAndroidTest/connected
Still error
Execution failed for task ':app:createDebugAndroidTestCoverageReport'.
> java.io.IOException: No coverage data to process in directories /app/build/outputs/code_coverage/debugAndroidTest/connected
sl...@gmail.com <sl...@gmail.com> #41
Did you remove the clearPackageData option ?
az...@gmail.com <az...@gmail.com> #42
I can confirm, that I also have issue with JaCoCo report with following error log:
> Caused by: org.gradle.api.UncheckedIOException: java.io.IOException: No coverage data to process in directories [[/Users/azizbekian/Projects/XXX/XXX/app/build/outputs/code_coverage/devDebugAndroidTest/connected]]
Using `androidTestUtil androidx.test:orchestrator:1.2.0`
AGP version 3.4.2
Gradle version 5.5
Have specified `testInstrumentationRunnerArguments clearPackageData: 'true'` in `defaultConfig` DSL
Have specified `execution 'ANDROIDX_TEST_ORCHESTRATOR'` in testOptions DSL
Problem is, that I cannot see `coverage.ec ` file being created in /code_coverage/devDebugAndroidTest/connected/ directory.
> Caused by: org.gradle.api.UncheckedIOException: java.io.IOException: No coverage data to process in directories [[/Users/azizbekian/Projects/XXX/XXX/app/build/outputs/code_coverage/devDebugAndroidTest/connected]]
Using `androidTestUtil androidx.test:orchestrator:1.2.0`
AGP version 3.4.2
Gradle version 5.5
Have specified `testInstrumentationRunnerArguments clearPackageData: 'true'` in `defaultConfig` DSL
Have specified `execution 'ANDROIDX_TEST_ORCHESTRATOR'` in testOptions DSL
Problem is, that I cannot see `
an...@gmail.com <an...@gmail.com> #43
Have any update for this issue? I'm also getting the same issue when run jacoco: java.io.IOException: No coverage data to process in directories
bj...@googlemail.com <bj...@googlemail.com> #44
I'm interested in a solution, too. If I cannot use the orchestrator, how can I make sure my tests are independent?
ma...@gmail.com <ma...@gmail.com> #45
This is ridiculous. How can it not been fixed after more than 2 years?
Running tests and having coverage data is a basic scenario for every developer that has some self-respect.
Running tests and having coverage data is a basic scenario for every developer that has some self-respect.
sc...@gmail.com <sc...@gmail.com> #46
I'm also running into this issue, can we get an update on this?
eu...@rbs.co.uk <eu...@rbs.co.uk> #47
But this isn't fixed. When clearPackageData is true, the coverage data is deleted.
wi...@gmail.com <wi...@gmail.com> #48
Please, is there any update on this?
ga...@google.com <ga...@google.com> #49
The root cause of this issue has been fixed, and you are almost certainly hitting another issue. Please open a new bug to help us track issues in a better way.
[Deleted User] <[Deleted User]> #50
At it again, Google? Giving vague answers about things being fixed with no real details to the users subscribed to the issue. Looks like they "fixed" it by making the "path" option work properly so you can specify the path. Mind you, I still have not gotten a chance to try this yet as the last time they said they fixed this I spent hours of my life trying to make it work without the required details. Didn't realize they had this split into two tickets so they could absolutely confuse *two* groups of people. See my comment on the other issue https://issuetracker.google.com/issues/123987001#comment17
ga...@google.com <ga...@google.com> #51
Please read all comments before posting, as
[Deleted User] <[Deleted User]> #52
and to you, please provide relevant information to your users when posting "fixed". Thank you.
Description
Enabling test orchestration causes incorrect coverage report statistics. Only the last run test will have coverage data correctly reported, all other test coverage data is lost when looking at the report.
I have attached a vanilla app created by android studio that has coverage enabled, test orchestrator enabled, and two tests that test two methods in the main activity.
Running the generated task 'createDebugAndroidTestCoverageReport' and checking the report will show only the last executed test has correct coverage data.
Libraries used: Espresso:3.0.1, Runner:1.0.1
What steps will reproduce the problem?
1. Create a vanilla app from the android studio prompt.
2. Enable test coverage in the debug buildtype (testCoverageEnabled = true)
2b. Enable test orchestration in testOptions (execution 'ANDROID_TEST_ORCHESTRATOR')
3. Create two test methods in the main activity (they can be static)
4. Create two tests in androidTest to test those methods.
5. Run the 'createDebugAndroidTestCoverageReport'
6. Open the report index: /build/reports/coverage/index.html
7. Navigate to the MainActivity and check the coverage for the two test methods.
EXPECTED: Both test methods are reported as covered.
ACTUAL: Only the last run test subject (method under test) has coverage reported.
How are you running your tests (via Android Studio, Gradle, adb, etc.)?
Gradle / Android Studio Gradle Projects Window using the 'createDebugAndroidTestCoverageReport'
What is the expected output? What do you see instead?
Code Coverage reports all methods have coverage.