You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2020/05/03 20:04:44 UTC
[maven] branch master updated: [MNG-6891] Improve user-friendliness
--fail-on-severity
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new 70cee55 [MNG-6891] Improve user-friendliness --fail-on-severity
70cee55 is described below
commit 70cee55688e06e0c4fccb128619fe3cfd090bb71
Author: Maarten Mulders <mt...@users.noreply.github.com>
AuthorDate: Sun May 3 22:04:37 2020 +0200
[MNG-6891] Improve user-friendliness --fail-on-severity
---
.../apache/maven/logwrapper/LogLevelRecorder.java | 27 +++++++++++++++++++++-
.../maven/logwrapper/LogLevelRecorderTest.java | 21 +++++++++++++++--
2 files changed, 45 insertions(+), 3 deletions(-)
diff --git a/maven-slf4j-wrapper/src/main/java/org/apache/maven/logwrapper/LogLevelRecorder.java b/maven-slf4j-wrapper/src/main/java/org/apache/maven/logwrapper/LogLevelRecorder.java
index 9fa4b51..4cbf326 100644
--- a/maven-slf4j-wrapper/src/main/java/org/apache/maven/logwrapper/LogLevelRecorder.java
+++ b/maven-slf4j-wrapper/src/main/java/org/apache/maven/logwrapper/LogLevelRecorder.java
@@ -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() )
diff --git a/maven-slf4j-wrapper/src/test/java/org/apache/maven/logwrapper/LogLevelRecorderTest.java b/maven-slf4j-wrapper/src/test/java/org/apache/maven/logwrapper/LogLevelRecorderTest.java
index 69b2853..2bdb867 100644
--- a/maven-slf4j-wrapper/src/test/java/org/apache/maven/logwrapper/LogLevelRecorderTest.java
+++ b/maven-slf4j-wrapper/src/test/java/org/apache/maven/logwrapper/LogLevelRecorderTest.java
@@ -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" ) );
}
}
\ No newline at end of file