Skip to content

Commit

Permalink
Allow mockito-logger configurable as Mockito extension
Browse files Browse the repository at this point in the history
  • Loading branch information
bedla committed Oct 21, 2018
1 parent 57d877d commit 94122e6
Show file tree
Hide file tree
Showing 28 changed files with 172 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.mockito.plugins.InstantiatorProvider;
import org.mockito.plugins.InstantiatorProvider2;
import org.mockito.plugins.MockMaker;
import org.mockito.plugins.MockitoLogger;
import org.mockito.plugins.MockitoPlugins;
import org.mockito.plugins.PluginSwitch;
import org.mockito.plugins.StackTraceCleanerProvider;
Expand All @@ -29,6 +30,7 @@ class DefaultMockitoPlugins implements MockitoPlugins {
DEFAULT_PLUGINS.put(InstantiatorProvider2.class.getName(), "org.mockito.internal.creation.instance.DefaultInstantiatorProvider");
DEFAULT_PLUGINS.put(AnnotationEngine.class.getName(), "org.mockito.internal.configuration.InjectingAnnotationEngine");
DEFAULT_PLUGINS.put(INLINE_ALIAS, "org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker");
DEFAULT_PLUGINS.put(MockitoLogger.class.getName(), "org.mockito.internal.util.ConsoleMockitoLogger");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.mockito.plugins.InstantiatorProvider;
import org.mockito.plugins.InstantiatorProvider2;
import org.mockito.plugins.MockMaker;
import org.mockito.plugins.MockitoLogger;
import org.mockito.plugins.PluginSwitch;
import org.mockito.plugins.StackTraceCleanerProvider;

Expand All @@ -25,9 +26,12 @@ class PluginRegistry {

private final InstantiatorProvider2 instantiatorProvider;

private AnnotationEngine annotationEngine = new PluginLoader(pluginSwitch)
private final AnnotationEngine annotationEngine = new PluginLoader(pluginSwitch)
.loadPlugin(AnnotationEngine.class);

private final MockitoLogger mockitoLogger = new PluginLoader(pluginSwitch)
.loadPlugin(MockitoLogger.class);

PluginRegistry() {
Object impl = new PluginLoader(pluginSwitch).loadPlugin(InstantiatorProvider2.class, InstantiatorProvider.class);
if (impl instanceof InstantiatorProvider) {
Expand Down Expand Up @@ -75,4 +79,14 @@ InstantiatorProvider2 getInstantiatorProvider() {
AnnotationEngine getAnnotationEngine() {
return annotationEngine;
}

/**
* Returns the logger available for the current runtime.
*
* <p>Returns {@link org.mockito.internal.util.ConsoleMockitoLogger} if no
* {@link org.mockito.plugins.MockitoLogger} extension exists or is visible in the current classpath.</p>
*/
MockitoLogger getMockitoLogger() {
return mockitoLogger;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
*/
package org.mockito.internal.configuration.plugins;

import org.mockito.plugins.MockitoLogger;
import org.mockito.plugins.AnnotationEngine;
import org.mockito.plugins.InstantiatorProvider2;
import org.mockito.plugins.MockMaker;
Expand Down Expand Up @@ -55,6 +56,16 @@ public static AnnotationEngine getAnnotationEngine() {
return registry.getAnnotationEngine();
}

/**
* Returns the logger available for the current runtime.
*
* <p>Returns {@link org.mockito.internal.util.ConsoleMockitoLogger} if no
* {@link org.mockito.plugins.MockitoLogger} extension exists or is visible in the current classpath.</p>
*/
public static MockitoLogger getMockitoLogger() {
return registry.getMockitoLogger();
}

/**
* @return instance of mockito plugins type
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import org.mockito.internal.exceptions.Reporter;
import org.mockito.internal.junit.TestFinishedEvent;
import org.mockito.internal.junit.UniversalTestListener;
import org.mockito.internal.util.MockitoLogger;
import org.mockito.plugins.MockitoLogger;
import org.mockito.quality.Strictness;

import java.util.List;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/mockito/internal/junit/JUnitRule.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import org.mockito.Mockito;
import org.mockito.MockitoSession;
import org.mockito.internal.session.MockitoSessionLoggerAdapter;
import org.mockito.internal.util.MockitoLogger;
import org.mockito.plugins.MockitoLogger;
import org.mockito.quality.Strictness;
import org.mockito.junit.MockitoRule;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*/
package org.mockito.internal.junit;

import org.mockito.internal.util.MockitoLogger;
import org.mockito.plugins.MockitoLogger;
import org.mockito.mock.MockCreationSettings;

import java.util.Collection;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*/
package org.mockito.internal.junit;

import org.mockito.internal.util.MockitoLogger;
import org.mockito.plugins.MockitoLogger;
import org.mockito.invocation.Invocation;

import java.util.LinkedHashMap;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import org.mockito.internal.creation.settings.CreationSettings;
import org.mockito.internal.listeners.AutoCleanableListener;
import org.mockito.internal.util.MockitoLogger;
import org.mockito.plugins.MockitoLogger;
import org.mockito.mock.MockCreationSettings;
import org.mockito.quality.Strictness;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
package org.mockito.internal.junit;

import org.mockito.internal.exceptions.Reporter;
import org.mockito.internal.util.MockitoLogger;
import org.mockito.plugins.MockitoLogger;
import org.mockito.invocation.Invocation;
import org.mockito.stubbing.Stubbing;

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/mockito/internal/runners/RunnerFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
package org.mockito.internal.runners;

import org.mockito.exceptions.base.MockitoException;
import org.mockito.internal.configuration.plugins.Plugins;
import org.mockito.internal.junit.MismatchReportingTestListener;
import org.mockito.internal.junit.MockitoTestListener;
import org.mockito.internal.junit.NoOpTestListener;
import org.mockito.internal.junit.StrictStubsRunnerTestListener;
import org.mockito.internal.runners.util.RunnerProvider;
import org.mockito.internal.util.ConsoleMockitoLogger;
import org.mockito.internal.util.Supplier;

import java.lang.reflect.InvocationTargetException;
Expand Down Expand Up @@ -39,7 +39,7 @@ public MockitoTestListener get() {
public InternalRunner createStrict(Class<?> klass) throws InvocationTargetException {
return create(klass, new Supplier<MockitoTestListener>() {
public MockitoTestListener get() {
return new MismatchReportingTestListener(new ConsoleMockitoLogger());
return new MismatchReportingTestListener(Plugins.getMockitoLogger());
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
package org.mockito.internal.session;

import org.mockito.MockitoSession;
import org.mockito.internal.configuration.plugins.Plugins;
import org.mockito.internal.framework.DefaultMockitoSession;
import org.mockito.internal.util.ConsoleMockitoLogger;
import org.mockito.internal.util.MockitoLogger;
import org.mockito.plugins.MockitoLogger;
import org.mockito.quality.Strictness;
import org.mockito.session.MockitoSessionBuilder;
import org.mockito.session.MockitoSessionLogger;
Expand Down Expand Up @@ -74,7 +74,7 @@ public MockitoSession startMocking() {
effectiveName = this.name == null ? lastTestClassInstance.getClass().getName() : this.name;
}
Strictness effectiveStrictness = this.strictness == null ? Strictness.STRICT_STUBS : this.strictness;
MockitoLogger logger = this.logger == null ? new ConsoleMockitoLogger() : new MockitoLoggerAdapter(this.logger);
MockitoLogger logger = this.logger == null ? Plugins.getMockitoLogger() : new MockitoLoggerAdapter(this.logger);
return new DefaultMockitoSession(effectiveTestClassInstances, effectiveName, effectiveStrictness, logger);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*/
package org.mockito.internal.session;

import org.mockito.internal.util.MockitoLogger;
import org.mockito.plugins.MockitoLogger;
import org.mockito.session.MockitoSessionLogger;

class MockitoLoggerAdapter implements MockitoLogger {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*/
package org.mockito.internal.session;

import org.mockito.internal.util.MockitoLogger;
import org.mockito.plugins.MockitoLogger;
import org.mockito.session.MockitoSessionLogger;

public class MockitoSessionLoggerAdapter implements MockitoSessionLogger {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
*/
package org.mockito.internal.util;

import org.mockito.plugins.MockitoLogger;

public class ConsoleMockitoLogger implements MockitoLogger {

/* (non-Javadoc)
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/mockito/junit/MockitoJUnit.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
package org.mockito.junit;

import org.mockito.Incubating;
import org.mockito.internal.configuration.plugins.Plugins;
import org.mockito.internal.junit.JUnitRule;
import org.mockito.internal.junit.VerificationCollectorImpl;
import org.mockito.internal.util.ConsoleMockitoLogger;
import org.mockito.quality.Strictness;

/**
Expand All @@ -30,7 +30,7 @@ public class MockitoJUnit {
* @since 1.10.17
*/
public static MockitoRule rule() {
return new JUnitRule(new ConsoleMockitoLogger(), Strictness.WARN);
return new JUnitRule(Plugins.getMockitoLogger(), Strictness.WARN);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.util;
package org.mockito.plugins;

public interface MockitoLogger {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;
import org.junit.runner.notification.RunNotifier;
import org.mockito.internal.configuration.plugins.Plugins;
import org.mockito.internal.debugging.WarningsCollector;
import org.mockito.internal.runners.RunnerFactory;
import org.mockito.internal.runners.InternalRunner;
import org.mockito.internal.util.ConsoleMockitoLogger;
import org.mockito.internal.util.MockitoLogger;
import org.mockito.plugins.MockitoLogger;

import java.lang.reflect.InvocationTargetException;

Expand All @@ -33,7 +33,7 @@ public class ConsoleSpammingMockitoJUnitRunner extends Runner implements Filtera
private final InternalRunner runner;

public ConsoleSpammingMockitoJUnitRunner(Class<?> klass) throws InvocationTargetException {
this(new ConsoleMockitoLogger(), new RunnerFactory().create(klass));
this(Plugins.getMockitoLogger(), new RunnerFactory().create(klass));
}

ConsoleSpammingMockitoJUnitRunner(MockitoLogger logger, InternalRunner runner) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@
import org.junit.Test;
import org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker;
import org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker;
import org.mockito.internal.util.ConsoleMockitoLogger;
import org.mockito.plugins.InstantiatorProvider;
import org.mockito.plugins.InstantiatorProvider2;
import org.mockito.plugins.MockMaker;
import org.mockito.plugins.MockitoLogger;
import org.mockitoutil.TestBase;

import static org.junit.Assert.*;
Expand All @@ -27,5 +29,6 @@ public void provides_plugins() throws Exception {
assertEquals(ByteBuddyMockMaker.class, plugins.getDefaultPlugin(MockMaker.class).getClass());
assertNotNull(plugins.getDefaultPlugin(InstantiatorProvider.class));
assertNotNull(plugins.getDefaultPlugin(InstantiatorProvider2.class));
assertEquals(ConsoleMockitoLogger.class, plugins.getDefaultPlugin(MockitoLogger.class).getClass());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
*/
package org.mockito.internal.util;

import org.mockito.plugins.MockitoLogger;

public class SimpleMockitoLogger implements MockitoLogger {

private StringBuilder loggedInfo = new StringBuilder();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import org.mockito.Mock;
import org.mockito.quality.Strictness;
import org.mockito.internal.junit.JUnitRule;
import org.mockito.internal.util.MockitoLogger;
import org.mockito.plugins.MockitoLogger;
import org.mockito.junit.MockitoRule;
import org.mockitousage.IMethods;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.mockito.plugins.InstantiatorProvider;
import org.mockito.plugins.InstantiatorProvider2;
import org.mockito.plugins.MockMaker;
import org.mockito.plugins.MockitoLogger;
import org.mockito.plugins.MockitoPlugins;
import org.mockito.plugins.PluginSwitch;
import org.mockito.plugins.StackTraceCleanerProvider;
Expand All @@ -32,6 +33,7 @@ public void provides_built_in_plugins() {
assertNotNull(plugins.getDefaultPlugin(InstantiatorProvider.class));
assertNotNull(plugins.getDefaultPlugin(InstantiatorProvider2.class));
assertNotNull(plugins.getDefaultPlugin(AnnotationEngine.class));
assertNotNull(plugins.getDefaultPlugin(MockitoLogger.class));
}

@SuppressWarnings("deprecation")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
*/
package org.mockito.android.internal.creation;

import org.mockito.internal.configuration.plugins.Plugins;
import org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker;
import org.mockito.internal.util.ConsoleMockitoLogger;
import org.mockito.internal.util.Platform;
import org.mockito.invocation.MockHandler;
import org.mockito.mock.MockCreationSettings;
Expand All @@ -21,7 +21,7 @@ public AndroidByteBuddyMockMaker() {
if (Platform.isAndroid() || Platform.isAndroidMockMakerRequired()) {
delegate = new SubclassByteBuddyMockMaker(new AndroidLoadingStrategy());
} else {
new ConsoleMockitoLogger().log(join(
Plugins.getMockitoLogger().log(join(
"IMPORTANT NOTE FROM MOCKITO:",
"",
"You included the 'mockito-android' dependency in a non-Android environment.",
Expand Down
2 changes: 2 additions & 0 deletions subprojects/extTest/extTest.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@ repositories {

dependencies {
testCompile "org.mockito:mockito-core:$version"
testCompile project(":junit-jupiter")
testCompile project(path: ':', configuration: 'testUtil')
testCompile libraries.junit4
testCompile libraries.assertj
testCompile libraries.junitJupiterApi
}

configurations.all {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* Copyright (c) 2018 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockitousage.plugins.logger;

import java.util.List;

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

@MockitoSettings(strictness = Strictness.WARN)
@ExtendWith(MockitoExtension.class)
class MockitoLoggerTest {
@BeforeAll
static void setUp() {
MyMockitoLogger.enable();
}

@Test
void strictness_warn_logged_into_custom_logger() {
when(mock(Foo.class).doIt()).thenReturn(123);
}

@AfterAll
static void tearDown() {
final List<Object> loggedItems = MyMockitoLogger.getLoggedItems();
assertThat(loggedItems)
.hasSize(1);
assertThat(loggedItems.get(0).toString())
.contains("[MockitoHint]")
.contains("org.mockitousage.plugins.logger.MockitoLoggerTest")
.contains("Unused");

MyMockitoLogger.clear();
}

interface Foo {
int doIt();
}
}
Loading

0 comments on commit 94122e6

Please sign in to comment.