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