Author: stephenc
Date: Thu Sep 23 15:08:18 2010
New Revision: 1000491

URL: http://svn.apache.org/viewvc?rev=1000491&view=rev
Log:
adding some unit tests

Added:
    maven/shared/trunk/maven-plugin-enforcer/src/test/
    maven/shared/trunk/maven-plugin-enforcer/src/test/java/
    maven/shared/trunk/maven-plugin-enforcer/src/test/java/org/
    maven/shared/trunk/maven-plugin-enforcer/src/test/java/org/apache/
    maven/shared/trunk/maven-plugin-enforcer/src/test/java/org/apache/maven/
    
maven/shared/trunk/maven-plugin-enforcer/src/test/java/org/apache/maven/util/
    
maven/shared/trunk/maven-plugin-enforcer/src/test/java/org/apache/maven/util/pluginenforcer/
    
maven/shared/trunk/maven-plugin-enforcer/src/test/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipantTest.java
   (with props)
Modified:
    maven/shared/trunk/maven-plugin-enforcer/pom.xml
    
maven/shared/trunk/maven-plugin-enforcer/src/main/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipant.java

Modified: maven/shared/trunk/maven-plugin-enforcer/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-plugin-enforcer/pom.xml?rev=1000491&r1=1000490&r2=1000491&view=diff
==============================================================================
--- maven/shared/trunk/maven-plugin-enforcer/pom.xml (original)
+++ maven/shared/trunk/maven-plugin-enforcer/pom.xml Thu Sep 23 15:08:18 2010
@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-  <!--
-    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.
-  -->
+<!--
+  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.
+-->
 
 <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
@@ -32,7 +32,8 @@
 
   <scm>
     
<connection>scm:svn:http://svn.apache.org/repos/asf/maven/shared/trunk/maven/maven-plugin-enforcer</connection>
-    
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/trunk/maven/maven-plugin-enforcer</developerConnection>
+    
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/shared/trunk/maven/maven-plugin-enforcer
+    </developerConnection>
     
<url>http://svn.apache.org/viewcvs.cgi/maven/shared/trunk/maven/maven-plugin-enforcer</url>
   </scm>
 
@@ -52,7 +53,13 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
-      <version>3.8.2</version>
+      <version>4.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <version>1.8.5</version>
       <scope>test</scope>
     </dependency>
   </dependencies>

Modified: 
maven/shared/trunk/maven-plugin-enforcer/src/main/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipant.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-plugin-enforcer/src/main/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipant.java?rev=1000491&r1=1000490&r2=1000491&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-plugin-enforcer/src/main/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipant.java
 (original)
+++ 
maven/shared/trunk/maven-plugin-enforcer/src/main/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipant.java
 Thu Sep 23 15:08:18 2010
@@ -23,7 +23,6 @@ import org.apache.maven.MavenExecutionEx
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Plugin;
-import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
@@ -71,6 +70,11 @@ public class PluginEnforcingMavenLifecyc
             String groupId = parts.length == 3 ? parts[0] : 
"org.apache.maven.plugins";
             String artifactId = parts[parts.length - 2];
             String version = parts[parts.length - 1];
+            if ( StringUtils.isEmpty( groupId ) || StringUtils.isEmpty( 
artifactId ) || StringUtils.isEmpty( version ) )
+            {
+                logger.warn( "\"" + forcePlugin + "\" does not match the 
format [groupId:]artifactId:version" );
+                continue;
+            }
             logger.info( "Forcing " + ArtifactUtils.versionlessKey( groupId, 
artifactId ) + " to " + version );
             logger.info( "" );
             for ( MavenProject project : session.getProjects() )

Added: 
maven/shared/trunk/maven-plugin-enforcer/src/test/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipantTest.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-plugin-enforcer/src/test/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipantTest.java?rev=1000491&view=auto
==============================================================================
--- 
maven/shared/trunk/maven-plugin-enforcer/src/test/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipantTest.java
 (added)
+++ 
maven/shared/trunk/maven-plugin-enforcer/src/test/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipantTest.java
 Thu Sep 23 15:08:18 2010
@@ -0,0 +1,135 @@
+package org.apache.maven.util.pluginenforcer;
+/*
+* 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.execution.MavenSession;
+import org.codehaus.plexus.logging.Logger;
+import org.junit.Test;
+
+import java.lang.reflect.Field;
+import java.util.Properties;
+
+import static org.mockito.Mockito.*;
+
+/**
+ * Unit tests of {...@link 
org.apache.maven.util.pluginenforcer.PluginEnforcingMavenLifecycleParticipant}.
+ *
+ * @author Stephen Connolly
+ * @since Sep 23, 2010 3:30:12 PM
+ */
+public class PluginEnforcingMavenLifecycleParticipantTest
+{
+
+    private PluginEnforcingMavenLifecycleParticipant newInstance( Logger 
logger )
+        throws NoSuchFieldException, IllegalAccessException
+    {
+        PluginEnforcingMavenLifecycleParticipant instance = new 
PluginEnforcingMavenLifecycleParticipant();
+        final Field loggerField = 
PluginEnforcingMavenLifecycleParticipant.class.getDeclaredField( "logger" );
+        loggerField.setAccessible( true );
+        loggerField.set( instance, logger );
+        return instance;
+    }
+
+    @Test
+    public void nothingToDo()
+        throws Exception
+    {
+        MavenSession session = mock( MavenSession.class );
+        Logger logger = mock( Logger.class );
+        PluginEnforcingMavenLifecycleParticipant instance = newInstance( 
logger );
+        when( session.getUserProperties() ).thenReturn( new Properties() );
+        instance.afterProjectsRead( session );
+        verify( logger ).info( contains( "Nothing to do" ) );
+    }
+
+    @Test
+    public void malformedTooSmall()
+        throws Exception
+    {
+        MavenSession session = mock( MavenSession.class );
+        Logger logger = mock( Logger.class );
+        PluginEnforcingMavenLifecycleParticipant instance = newInstance( 
logger );
+        final Properties properties = new Properties();
+        properties.setProperty( "force.plugins", "true" );
+        when( session.getUserProperties() ).thenReturn( properties );
+        instance.afterProjectsRead( session );
+        verify( logger, times(1) ).warn( contains( "does not match the format" 
) );
+    }
+
+    @Test
+    public void malformedTooBig()
+        throws Exception
+    {
+        MavenSession session = mock( MavenSession.class );
+        Logger logger = mock( Logger.class );
+        PluginEnforcingMavenLifecycleParticipant instance = newInstance( 
logger );
+        final Properties properties = new Properties();
+        properties.setProperty( "force.plugins", "g:a:v:c" );
+        when( session.getUserProperties() ).thenReturn( properties );
+        instance.afterProjectsRead( session );
+        verify( logger, times(1) ).warn( contains( "does not match the format" 
) );
+    }
+
+    @Test
+    public void malformedEmpty()
+        throws Exception
+    {
+        MavenSession session = mock( MavenSession.class );
+        Logger logger = mock( Logger.class );
+        PluginEnforcingMavenLifecycleParticipant instance = newInstance( 
logger );
+        final Properties properties = new Properties();
+        properties.setProperty( "force.plugins", "g::v" );
+        when( session.getUserProperties() ).thenReturn( properties );
+        instance.afterProjectsRead( session );
+        verify( logger, times( 1 ) ).warn( contains( "does not match the 
format" ) );
+    }
+
+    @Test
+    public void parseSingle()
+        throws Exception
+    {
+        MavenSession session = mock( MavenSession.class );
+        Logger logger = mock( Logger.class );
+        PluginEnforcingMavenLifecycleParticipant instance = newInstance( 
logger );
+        final Properties properties = new Properties();
+        properties.setProperty( "force.plugins", "org.mytest:myplugin:1.0" );
+        when( session.getUserProperties() ).thenReturn( properties );
+        instance.afterProjectsRead( session );
+        verify( logger, atLeastOnce() ).info( matches( 
"^(.(?!([fF]orcing)))*$" ) );
+        verify( logger, times( 1 ) ).info( contains( "Forcing 
org.mytest:myplugin to 1.0" ) );
+    }
+
+    @Test
+    public void parseMultiple()
+        throws Exception
+    {
+        MavenSession session = mock( MavenSession.class );
+        Logger logger = mock( Logger.class );
+        PluginEnforcingMavenLifecycleParticipant instance = newInstance( 
logger );
+        final Properties properties = new Properties();
+        properties.setProperty( "force.plugins", 
"org.mytest:myplugin:1.0,org.mytest.some:foobar:3.0" );
+        when( session.getUserProperties() ).thenReturn( properties );
+        instance.afterProjectsRead( session );
+        verify( logger, atLeastOnce() ).info( matches( 
"^(.(?!([fF]orcing)))*$" ) );
+        verify( logger, times( 1 ) ).info( contains( "Forcing 
org.mytest:myplugin to 1.0" ) );
+        verify( logger, times( 1 ) ).info( contains( "Forcing 
org.mytest.some:foobar to 3.0" ) );
+    }
+
+
+}

Propchange: 
maven/shared/trunk/maven-plugin-enforcer/src/test/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipantTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/shared/trunk/maven-plugin-enforcer/src/test/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipantTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to