mirror of https://github.com/apache/maven.git
[MNG-6891] Improve user-friendliness --fail-on-severity
This commit is contained in:
parent
50119d4f73
commit
7aef391551
|
@ -21,17 +21,29 @@ package org.apache.maven.logwrapper;
|
|||
|
||||
import org.slf4j.event.Level;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Responsible for keeping state of whether the threshold of the --fail-on-severity flag has been hit.
|
||||
*/
|
||||
public class LogLevelRecorder
|
||||
{
|
||||
private static final Map<String, Level> ACCEPTED_LEVELS = new HashMap<>();
|
||||
static
|
||||
{
|
||||
ACCEPTED_LEVELS.put( "WARN", Level.WARN );
|
||||
ACCEPTED_LEVELS.put( "WARNING", Level.WARN );
|
||||
ACCEPTED_LEVELS.put( "ERROR", Level.ERROR );
|
||||
}
|
||||
|
||||
private final Level logThreshold;
|
||||
private boolean metThreshold = false;
|
||||
|
||||
public LogLevelRecorder( String threshold )
|
||||
{
|
||||
Level level = Level.valueOf( threshold );
|
||||
Level level = determineThresholdLevel( threshold );
|
||||
|
||||
if ( level.toInt() < Level.WARN.toInt() )
|
||||
{
|
||||
throw new IllegalArgumentException( "Logging severity thresholds can only be set to WARN or ERROR" );
|
||||
|
@ -40,6 +52,19 @@ public class LogLevelRecorder
|
|||
logThreshold = level;
|
||||
}
|
||||
|
||||
private Level determineThresholdLevel( String input )
|
||||
{
|
||||
final Level result = ACCEPTED_LEVELS.get( input );
|
||||
if ( result == null )
|
||||
{
|
||||
String message = String.format(
|
||||
"%s is not a valid log severity threshold. Valid severities are WARN/WARNING and ERROR.",
|
||||
input );
|
||||
throw new IllegalArgumentException( message );
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public void record( Level logLevel )
|
||||
{
|
||||
if ( !metThreshold && logLevel.toInt() >= logThreshold.toInt() )
|
||||
|
|
|
@ -22,7 +22,10 @@ package org.apache.maven.logwrapper;
|
|||
import org.junit.Test;
|
||||
import org.slf4j.event.Level;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.containsString;
|
||||
import static org.junit.Assert.assertThrows;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
|
||||
public class LogLevelRecorderTest
|
||||
{
|
||||
|
@ -41,9 +44,23 @@ public class LogLevelRecorderTest
|
|||
new LogLevelRecorder( "INFO" );
|
||||
}
|
||||
|
||||
@Test( expected = IllegalArgumentException.class )
|
||||
@Test
|
||||
public void createsLogLevelRecorderWithWarning()
|
||||
{
|
||||
LogLevelRecorder logLevelRecorder = new LogLevelRecorder( "WARNING" );
|
||||
logLevelRecorder.record( Level.ERROR );
|
||||
|
||||
assertTrue( logLevelRecorder.metThreshold() );
|
||||
}
|
||||
|
||||
@Test
|
||||
public void failsOnUnknownLogLevel ()
|
||||
{
|
||||
new LogLevelRecorder( "SEVERE" );
|
||||
Throwable thrown = assertThrows( IllegalArgumentException.class, () -> new LogLevelRecorder( "SEVERE" ) );
|
||||
String message = thrown.getMessage();
|
||||
assertThat( message, containsString( "SEVERE is not a valid log severity threshold" ) );
|
||||
assertThat( message, containsString( "WARN" ) );
|
||||
assertThat( message, containsString( "WARNING" ) );
|
||||
assertThat( message, containsString( "ERROR" ) );
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue