package de.is24.maven.slf4j;
import org.apache.maven.plugin.AbstractMojoExecutionException;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.logging.Log;
import org.junit.Test;
import org.slf4j.LoggerFactory;
import static org.mockito.Mockito.*;
public final class An_AbstractSlf4jMojo {
@Test
public void wrapsMavenLogger() throws MojoFailureException, MojoExecutionException {
Log logMock = mock(Log.class);
when(logMock.isInfoEnabled()).thenReturn(true);
AbstractSlf4jMojo objectUnderTest = new AbstractSlf4jMojo() {
@Override
protected void doExecute() throws MojoExecutionException, MojoFailureException {
LoggerFactory.getLogger(getClass()).info("Hello JUnit!");
}
};
objectUnderTest.setLog(logMock);
objectUnderTest.execute();
verify(logMock).info("Hello JUnit!");
}
@Test
public void resetsMockEvenWhenExceptionOccurs() {
Log logMock = mock(Log.class);
AbstractSlf4jMojo objectUnderTest = new AbstractSlf4jMojo() {
@Override
protected void doExecute() throws MojoExecutionException, MojoFailureException {
throw new MojoFailureException("FAIL");
}
};
objectUnderTest.setLog(logMock);
try {
objectUnderTest.execute();
} catch (AbstractMojoExecutionException ignored) {
}
LoggerFactory.getLogger(getClass()).info("Hello JUnit!");
verifyZeroInteractions(logMock);
}
}