summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-02-02 18:47:09 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-02-02 18:47:09 +0000
commit798d09796948d96559c85accf9e5f1bd81a3a449 (patch)
tree7e9f5ae3e621bf35333c6a2870f04cc453bf107f
parentc143d3535580927bac7d9d6be6ebd5f49194e58f (diff)
parent50381c5a8bcdc5ba02d5b57e1e5a79fccdd87669 (diff)
downloadmockito-798d09796948d96559c85accf9e5f1bd81a3a449.tar.gz
Snap for 11397440 from 50381c5a8bcdc5ba02d5b57e1e5a79fccdd87669 to mainline-ipsec-releaseaml_ips_341611000
Change-Id: If620d4a62922757878a2f1516383c77f4fe707e2
-rw-r--r--README.version1
-rw-r--r--src/main/java/org/mockito/internal/framework/DefaultMockitoSession.java21
2 files changed, 20 insertions, 2 deletions
diff --git a/README.version b/README.version
index 33436a1..1a82721 100644
--- a/README.version
+++ b/README.version
@@ -9,4 +9,5 @@ Dexmaker module.
The source can be updated using the update_source.sh script.
Local Modifications:
+ Fixed DefaultMockitoSession constructor. (I14ed7c032a974c3a65caaf091d36d9667ea331b6)
New API to clean up all inline mocks after test (8bdfbf053ab6e4fc14a3eaecb613f5838fdf0f09)
diff --git a/src/main/java/org/mockito/internal/framework/DefaultMockitoSession.java b/src/main/java/org/mockito/internal/framework/DefaultMockitoSession.java
index c900bf7..c81baf2 100644
--- a/src/main/java/org/mockito/internal/framework/DefaultMockitoSession.java
+++ b/src/main/java/org/mockito/internal/framework/DefaultMockitoSession.java
@@ -32,8 +32,25 @@ public class DefaultMockitoSession implements MockitoSession {
} catch (RedundantListenerException e) {
Reporter.unfinishedMockingSession();
}
- for (Object testClassInstance : testClassInstances) {
- MockitoAnnotations.initMocks(testClassInstance);
+ try {
+ for (Object testClassInstance : testClassInstances) {
+ MockitoAnnotations.initMocks(testClassInstance);
+ }
+ } catch (RuntimeException | Error e) {
+ try {
+ // TODO: ideally this scenario should be tested on DefaultMockitoSessionBuilderTest,
+ // but we don't have any Android.bp project to run it.
+ // Besides, the latest Mockito code (https://github.com/mockito/mockito/blob/main/src/main/java/org/mockito/internal/framework/DefaultMockitoSession.java
+ // at the time this patch was merged) has a different workflow, where the listener
+ // is marked as dirty when an exception is thrown, so we're forking the solution.
+ Mockito.framework().removeListener(listener);
+ } catch (RuntimeException | Error e2) {
+ // Ignore it, as the real failure is e, thrown at the end
+ System.err.println("DefaultMockitoSession: ignoring exception thrown when removing "
+ + "listener " + listener);
+ e2.printStackTrace(System.err);
+ }
+ throw e;
}
}