Author: bimargulies
Date: Mon Mar 27 14:46:58 2017
New Revision: 1788940
URL: http://svn.apache.org/viewvc?rev=1788940&view=rev
Log:
[MSHADE-253] Re-enable minimization test and add pom project test
Modified:
maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/MinijarFilterTest.java
Modified:
maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/MinijarFilterTest.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/MinijarFilterTest.java?rev=1788940&r1=1788939&r2=1788940&view=diff
==============================================================================
---
maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/MinijarFilterTest.java
(original)
+++
maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/filter/MinijarFilterTest.java
Mon Mar 27 14:46:58 2017
@@ -22,9 +22,20 @@ package org.apache.maven.plugins.shade.f
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import java.io.File;
+import java.io.IOException;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.project.MavenProject;
+import org.junit.Before;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
import org.mockito.ArgumentCaptor;
import junit.framework.Assert;
@@ -32,37 +43,94 @@ import junit.framework.Assert;
public class MinijarFilterTest
{
-// @Test
-// public void theTestWhichIsTooExpensiveAtTheMoment()
-// throws IOException
-// {
-// ArgumentCaptor<CharSequence> logCaptor = ArgumentCaptor.forClass(
CharSequence.class );
-//
-// MavenProject mavenProject = mock( MavenProject.class );
-// Log log = mock( Log.class );
-//
-// Artifact artifact = mock( Artifact.class );
-// when( artifact.getGroupId() ).thenReturn( "com" );
-// when( artifact.getArtifactId() ).thenReturn( "aid" );
-// when( artifact.getVersion() ).thenReturn( "1.9" );
-// when( artifact.getClassifier() ).thenReturn( "classifier1" );
-// when( artifact.getScope() ).thenReturn( Artifact.SCOPE_COMPILE );
-//
-// when( mavenProject.getArtifact() ).thenReturn( artifact );
-//
-// Set<Artifact> artifacts = new TreeSet<Artifact>();
-// artifacts.add( new DefaultArtifact( "dep.com", "dep.aid", "1.0",
"compile", "jar", "classifier2", null ) );
-//
-// when( mavenProject.getArtifacts() ).thenReturn( artifacts );
-// when( mavenProject.getArtifact().getFile() ).thenReturn( mock(
File.class ) );
-//
-// MinijarFilter mf = new MinijarFilter( mavenProject, log );
-//
-// mf.finished();
-// verify( log, times( 1 ) ).info( logCaptor.capture() );
-//
-// Assert.assertEquals( "Minimized 0 -> 0", logCaptor.getValue() );
-// }
+ private File emptyFile;
+
+ @Before
+ public void init() throws IOException {
+ TemporaryFolder tempFolder = new TemporaryFolder();
+ tempFolder.create();
+ this.emptyFile = tempFolder.newFile();
+
+ }
+
+ @Test
+ public void testWithMockProject()
+ throws IOException
+ {
+ ArgumentCaptor<CharSequence> logCaptor = ArgumentCaptor.forClass(
CharSequence.class );
+
+ MavenProject mavenProject = mockProject(emptyFile);
+
+ Log log = mock( Log.class );
+
+ MinijarFilter mf = new MinijarFilter( mavenProject, log );
+
+ mf.finished();
+
+ verify( log, times( 1 ) ).info( logCaptor.capture() );
+
+ Assert.assertEquals( "Minimized 0 -> 0", logCaptor.getValue() );
+
+ }
+
+ @Test
+ public void testWithPomProject()
+ throws IOException
+ {
+ ArgumentCaptor<CharSequence> logCaptor = ArgumentCaptor.forClass(
CharSequence.class );
+
+ // project with pom packaging and no artifact.
+ MavenProject mavenProject = mockProject(null);
+ mavenProject.setPackaging("pom");
+
+ Log log = mock( Log.class );
+
+ MinijarFilter mf = new MinijarFilter( mavenProject, log );
+
+ mf.finished();
+
+ verify( log, times( 1 ) ).info( logCaptor.capture() );
+
+ // verify no access to project's artifacts
+ verify( mavenProject, times(0) ).getArtifacts();
+
+ Assert.assertEquals( "Minimized 0 -> 0", logCaptor.getValue() );
+
+ }
+
+ private MavenProject mockProject(File file) {
+ MavenProject mavenProject = mock( MavenProject.class );
+
+ Artifact artifact = mock( Artifact.class );
+ when( artifact.getGroupId() ).thenReturn( "com" );
+ when( artifact.getArtifactId() ).thenReturn( "aid" );
+ when( artifact.getVersion() ).thenReturn( "1.9" );
+ when( artifact.getClassifier() ).thenReturn( "classifier1" );
+ when( artifact.getScope() ).thenReturn( Artifact.SCOPE_COMPILE );
+
+ when( mavenProject.getArtifact() ).thenReturn( artifact );
+
+ DefaultArtifact dependencyArtifact =
+ new DefaultArtifact(
+ "dep.com",
+ "dep.aid",
+ "1.0",
+ "compile",
+ "jar",
+ "classifier2",
+ null);
+ dependencyArtifact.setFile(file);
+
+ Set<Artifact> artifacts = new TreeSet<Artifact>();
+ artifacts.add( dependencyArtifact );
+
+ when( mavenProject.getArtifacts() ).thenReturn( artifacts );
+
+ when( mavenProject.getArtifact().getFile() ).thenReturn( file );
+
+ return mavenProject;
+
+ }
@Test
public void finsishedShouldProduceMessageForClassesTotalNonZero()