summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-02-03 00:41:47 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2024-02-03 00:41:47 +0000
commit63dcac2b48096ad074f6a0541bb86985431c40a3 (patch)
tree7e9f5ae3e621bf35333c6a2870f04cc453bf107f
parent563469eedd77a78235175eaa2604cf38d79e5e14 (diff)
parent9448490d7fee6c64b9dcc71a87f20ec746730a7f (diff)
downloadmockito-simpleperf-release.tar.gz
Merge "Snap for 11400057 from ece464fd0a2f69b4dfe7e57ff9d2e1c04f2172ae to simpleperf-release" into simpleperf-releasesimpleperf-release
-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;
}
}