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 2019/09/11 19:42:11 UTC

[maven-dependency-plugin] 08/08: Replace CapturingLog class with Mockito usage

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-dependency-plugin.git

commit 9eb19876491c3f9c069b8acacabdad4a49a0f940
Author: Maarten Mulders <ma...@infosupport.com>
AuthorDate: Mon Sep 9 07:29:57 2019 +0200

    Replace CapturingLog class with Mockito usage
---
 pom.xml                                            |   6 +
 .../maven/plugins/dependency/CapturingLog.java     | 179 ---------------------
 .../apache/maven/plugins/dependency/TestSkip.java  |  12 +-
 .../ExcludeReactorProjectsArtifactFilterTest.java  |  21 ++-
 4 files changed, 33 insertions(+), 185 deletions(-)

diff --git a/pom.xml b/pom.xml
index c6e5fca..35c1ac5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -282,6 +282,12 @@ under the License.
       <version>${pluginTestingVersion}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <version>2.28.2</version>
+      <scope>test</scope>
+    </dependency>
 
    <dependency>
       <groupId>org.codehaus.plexus</groupId>
diff --git a/src/test/java/org/apache/maven/plugins/dependency/CapturingLog.java b/src/test/java/org/apache/maven/plugins/dependency/CapturingLog.java
deleted file mode 100644
index 4506823..0000000
--- a/src/test/java/org/apache/maven/plugins/dependency/CapturingLog.java
+++ /dev/null
@@ -1,179 +0,0 @@
-package org.apache.maven.plugins.dependency;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import org.apache.maven.plugin.logging.Log;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-/** Helper to do assertions on what is being logged. */
-public class CapturingLog
-    implements Log
-{
-    StringBuilder sb = new StringBuilder();
-
-    /** {@inheritDoc} */
-    public void debug( CharSequence content )
-    {
-        print( "debug", content );
-    }
-
-    /** {@inheritDoc} */
-    public void debug( CharSequence content, Throwable error )
-    {
-        print( "debug", content, error );
-    }
-
-    /** {@inheritDoc} */
-    public void debug( Throwable error )
-    {
-        print( "debug", error );
-    }
-
-    /** {@inheritDoc} */
-    public void info( CharSequence content )
-    {
-        print( "info", content );
-    }
-
-    /** {@inheritDoc} */
-    public void info( CharSequence content, Throwable error )
-    {
-        print( "info", content, error );
-    }
-
-    /** {@inheritDoc} */
-    public void info( Throwable error )
-    {
-        print( "info", error );
-    }
-
-    /** {@inheritDoc} */
-    public void warn( CharSequence content )
-    {
-        print( "warn", content );
-    }
-
-    /** {@inheritDoc} */
-    public void warn( CharSequence content, Throwable error )
-    {
-        print( "warn", content, error );
-    }
-
-    /** {@inheritDoc} */
-    public void warn( Throwable error )
-    {
-        print( "warn", error );
-    }
-
-    /** {@inheritDoc} */
-    public void error( CharSequence content )
-    {
-        System.err.println( "[error] " + content.toString() );
-    }
-
-    /** {@inheritDoc} */
-    public void error( CharSequence content, Throwable error )
-    {
-        StringWriter sWriter = new StringWriter();
-        PrintWriter pWriter = new PrintWriter( sWriter );
-
-        error.printStackTrace( pWriter );
-
-        System.err.println( "[error] " + content.toString() + System.lineSeparator() + System.lineSeparator() + sWriter.toString() );
-    }
-
-    /**
-     * @see Log#error(Throwable)
-     */
-    public void error( Throwable error )
-    {
-        StringWriter sWriter = new StringWriter();
-        PrintWriter pWriter = new PrintWriter( sWriter );
-
-        error.printStackTrace( pWriter );
-
-        System.err.println( "[error] " + sWriter.toString() );
-    }
-
-    /**
-     * @see Log#isDebugEnabled()
-     */
-    public boolean isDebugEnabled()
-    {
-        // TODO: Not sure how best to set these for this implementation...
-        return true;
-    }
-
-    /**
-     * @see Log#isInfoEnabled()
-     */
-    public boolean isInfoEnabled()
-    {
-        return true;
-    }
-
-    /**
-     * @see Log#isWarnEnabled()
-     */
-    public boolean isWarnEnabled()
-    {
-        return true;
-    }
-
-    /**
-     * @see Log#isErrorEnabled()
-     */
-    public boolean isErrorEnabled()
-    {
-        return true;
-    }
-
-    private void print( String prefix, CharSequence content )
-    {
-        sb.append( "[" ).append( prefix ).append( "] " ).append( content.toString() ).append( System.lineSeparator() );
-    }
-
-    private void print( String prefix, Throwable error )
-    {
-        StringWriter sWriter = new StringWriter();
-        PrintWriter pWriter = new PrintWriter( sWriter );
-
-        error.printStackTrace( pWriter );
-
-        sb.append( "[" ).append( prefix ).append( "] " ).append( sWriter.toString() ).append( System.lineSeparator() );
-    }
-
-    private void print( String prefix, CharSequence content, Throwable error )
-    {
-        StringWriter sWriter = new StringWriter();
-        PrintWriter pWriter = new PrintWriter( sWriter );
-
-        error.printStackTrace( pWriter );
-
-        sb.append( "[" ).append( prefix ).append( "] " ).append( content.toString() ).append( System.lineSeparator() ).append( System.lineSeparator() ).append( sWriter.toString() ).append( System.lineSeparator() );
-    }
-
-    public String getContent()
-    {
-        return sb.toString();
-    }
-}
diff --git a/src/test/java/org/apache/maven/plugins/dependency/TestSkip.java b/src/test/java/org/apache/maven/plugins/dependency/TestSkip.java
index 54e3d3d..b681f0c 100644
--- a/src/test/java/org/apache/maven/plugins/dependency/TestSkip.java
+++ b/src/test/java/org/apache/maven/plugins/dependency/TestSkip.java
@@ -1,9 +1,15 @@
 package org.apache.maven.plugins.dependency;
 
 import org.apache.maven.plugin.Mojo;
+import org.apache.maven.plugin.logging.Log;
+import org.mockito.ArgumentCaptor;
 
 import java.io.File;
 
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -158,11 +164,13 @@ public class TestSkip
         File testPom = new File( getBasedir(), "target/test-classes/unit/skip-test/" + configFile );
         Mojo mojo = lookupMojo( mojoName, testPom );
         assertNotNull( mojo );
-        CapturingLog log = new CapturingLog();
+        Log log = mock( Log.class );
         mojo.setLog( log );
         mojo.execute();
 
-        assertTrue( log.getContent().contains( "Skipping plugin execution" ) );
+        ArgumentCaptor<String> captor = ArgumentCaptor.forClass( String.class );
+        verify( log, atLeastOnce() ).info( captor.capture() );
+        assertTrue( captor.getValue().contains( "Skipping plugin execution" ) );
     }
 
 }
diff --git a/src/test/java/org/apache/maven/plugins/dependency/resolvers/ExcludeReactorProjectsArtifactFilterTest.java b/src/test/java/org/apache/maven/plugins/dependency/resolvers/ExcludeReactorProjectsArtifactFilterTest.java
index 8d83f55..c6de09b 100644
--- a/src/test/java/org/apache/maven/plugins/dependency/resolvers/ExcludeReactorProjectsArtifactFilterTest.java
+++ b/src/test/java/org/apache/maven/plugins/dependency/resolvers/ExcludeReactorProjectsArtifactFilterTest.java
@@ -20,18 +20,24 @@ package org.apache.maven.plugins.dependency.resolvers;
  */
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.plugin.testing.stubs.ArtifactStub;
 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 import org.apache.maven.plugins.dependency.AbstractDependencyMojoTestCase;
-import org.apache.maven.plugins.dependency.CapturingLog;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.artifact.filter.collection.ArtifactFilterException;
+import org.mockito.ArgumentCaptor;
 
 import java.util.HashSet;
 import java.util.Set;
 
 import static java.util.Collections.singleton;
 import static java.util.Collections.singletonList;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 public class ExcludeReactorProjectsArtifactFilterTest
         extends AbstractDependencyMojoTestCase
@@ -54,16 +60,19 @@ public class ExcludeReactorProjectsArtifactFilterTest
         artifacts.add( artifact1 );
         artifacts.add( artifact2 );
 
-        CapturingLog log = new CapturingLog();
         MavenProject project = new MavenProjectStub();
         project.setArtifact(artifact1);
 
+        Log log = mock( Log.class );
+        when( log.isDebugEnabled() ).thenReturn( false );
+
         ExcludeReactorProjectsArtifactFilter filter = new ExcludeReactorProjectsArtifactFilter(
                 singletonList( project ), log );
 
         Set<Artifact> result = filter.filter( artifacts );
 
         assertEquals( 1, result.size() );
+        verify( log, never() ).debug( any( String.class ) );
     }
 
     public void testFilterWithLogging()
@@ -74,15 +83,19 @@ public class ExcludeReactorProjectsArtifactFilterTest
         artifact.setArtifactId("maven-dependency-plugin-dummy");
         artifact.setVersion("1.0");
 
-        CapturingLog log = new CapturingLog();
         MavenProject project = new MavenProjectStub();
         project.setArtifact(artifact);
 
+        Log log = mock( Log.class );
+        when( log.isDebugEnabled() ).thenReturn( true );
+
         ExcludeReactorProjectsArtifactFilter filter = new ExcludeReactorProjectsArtifactFilter(
                 singletonList( project ), log );
 
         filter.filter( singleton( artifact ) );
 
-        assertTrue( log.getContent().contains( "Skipped artifact" ) );
+        ArgumentCaptor<String> captor = ArgumentCaptor.forClass( String.class );
+        verify( log ).debug( captor.capture() );
+        assertTrue( captor.getValue().contains( "Skipped artifact" ) );
     }
 }