Author: jdcasey
Date: Fri Mar  9 16:33:57 2007
New Revision: 516623

URL: http://svn.apache.org/viewvc?view=rev&rev=516623
Log:
unit tests for LifecycleOverlayPlanModifier.

Added:
    
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/test/java/org/apache/maven/lifecycle/plan/
    
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/test/java/org/apache/maven/lifecycle/plan/LifecycleOverlayPlanModifierTest.java
   (with props)
Modified:
    
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlanner.java
    
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecycleOverlayPlanModifier.java
    
maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java
    
maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/maven/lifecycle/LifecycleUtilsTest.java

Modified: 
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlanner.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlanner.java?view=diff&rev=516623&r1=516622&r2=516623
==============================================================================
--- 
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlanner.java
 (original)
+++ 
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/DefaultLifecyclePlanner.java
 Fri Mar  9 16:33:57 2007
@@ -37,7 +37,7 @@
         LifecycleBindings packagingBindings = 
lifecycleBindingManager.getBindingsForPackaging( project );
         LifecycleBindings projectBindings = 
lifecycleBindingManager.getProjectCustomBindings( project );
 
-        LifecycleBindings merged = LifecycleUtils.mergeBindings( 
packagingBindings, projectBindings, defaultBindings, false );
+        LifecycleBindings merged = LifecycleUtils.mergeBindings( 
packagingBindings, projectBindings, defaultBindings, false, false );
 
         // foreach task, find the binding list from the merged 
lifecycle-bindings.
         // if the binding list is a super-set of a previous task, forget the 
previous task/binding

Modified: 
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecycleOverlayPlanModifier.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecycleOverlayPlanModifier.java?view=diff&rev=516623&r1=516622&r2=516623
==============================================================================
--- 
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecycleOverlayPlanModifier.java
 (original)
+++ 
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/main/java/org/apache/maven/lifecycle/plan/LifecycleOverlayPlanModifier.java
 Fri Mar  9 16:33:57 2007
@@ -37,7 +37,7 @@
         // the ordering of these LifecycleBindings instances may seem 
reversed, but it is done this
         // way on purpose, in order to make the configurations from the main 
bindings be dominant
         // over those specified in the lifecycle overlay.
-        return LifecycleUtils.mergeBindings( cloned, bindings, null, true );
+        return LifecycleUtils.mergeBindings( bindings, cloned, null, true, 
true );
     }
 
     public void addModifier( LifecyclePlanModifier planModifier )

Added: 
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/test/java/org/apache/maven/lifecycle/plan/LifecycleOverlayPlanModifierTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-core/src/test/java/org/apache/maven/lifecycle/plan/LifecycleOverlayPlanModifierTest.java?view=auto&rev=516623
==============================================================================
--- 
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/test/java/org/apache/maven/lifecycle/plan/LifecycleOverlayPlanModifierTest.java
 (added)
+++ 
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/test/java/org/apache/maven/lifecycle/plan/LifecycleOverlayPlanModifierTest.java
 Fri Mar  9 16:33:57 2007
@@ -0,0 +1,113 @@
+package org.apache.maven.lifecycle.plan;
+
+import org.apache.maven.lifecycle.model.LifecycleBindings;
+import org.apache.maven.lifecycle.model.MojoBinding;
+
+import junit.framework.TestCase;
+
+public class LifecycleOverlayPlanModifierTest
+    extends TestCase
+{
+
+    public void testModifyEmptyLifecycleBindings_AddTwoMojos()
+        throws LifecyclePlannerException
+    {
+        LifecycleBindings overlay = new LifecycleBindings();
+        overlay.getCleanBinding().getClean().addBinding( newMojo( "group", 
"artifact", "clean" ) );
+        overlay.getBuildBinding().getCompile().addBinding( newMojo( "group", 
"artifact", "compile" ) );
+
+        LifecycleBindings target = new LifecycleBindings();
+        assertEquals( 0, 
target.getCleanBinding().getClean().getBindings().size() );
+        assertEquals( 0, 
target.getBuildBinding().getCompile().getBindings().size() );
+
+        target = new LifecycleOverlayPlanModifier( overlay ).modifyBindings( 
target );
+
+        assertEquals( 1, 
target.getCleanBinding().getClean().getBindings().size() );
+        assertMojo( "group", "artifact", "clean", (MojoBinding) 
target.getCleanBinding().getClean().getBindings().get( 0 ) );
+
+        assertEquals( 1, 
target.getBuildBinding().getCompile().getBindings().size() );
+        assertMojo( "group", "artifact", "compile", (MojoBinding) 
target.getBuildBinding().getCompile().getBindings().get( 0 ) );
+    }
+
+    public void 
testModifyExistingLifecycleBindings_AddTwoMojosToExistingTwoMojosInSamePhases()
+        throws LifecyclePlannerException
+    {
+        LifecycleBindings overlay = new LifecycleBindings();
+        overlay.getCleanBinding().getClean().addBinding( newMojo( "group", 
"artifact", "clean" ) );
+        overlay.getBuildBinding().getCompile().addBinding( newMojo( "group", 
"artifact", "compile" ) );
+
+        LifecycleBindings target = new LifecycleBindings();
+        target.getCleanBinding().getClean().addBinding( newMojo( 
"org.apache.maven.plugins", "maven-clean-plugin", "clean" ) );
+        target.getBuildBinding().getCompile().addBinding(
+                                                          newMojo( 
"org.apache.maven.plugins", "maven-compiler-plugin", "compile" ) );
+
+        assertEquals( 1, 
target.getCleanBinding().getClean().getBindings().size() );
+        assertEquals( 1, 
target.getBuildBinding().getCompile().getBindings().size() );
+
+        target = new LifecycleOverlayPlanModifier( overlay ).modifyBindings( 
target );
+
+        assertEquals( 2, 
target.getCleanBinding().getClean().getBindings().size() );
+        assertMojo( "org.apache.maven.plugins", "maven-clean-plugin", "clean",
+                    (MojoBinding) 
target.getCleanBinding().getClean().getBindings().get( 0 ) );
+        assertMojo( "group", "artifact", "clean", (MojoBinding) 
target.getCleanBinding().getClean().getBindings().get( 1 ) );
+
+        assertEquals( 2, 
target.getBuildBinding().getCompile().getBindings().size() );
+        assertMojo( "org.apache.maven.plugins", "maven-compiler-plugin", 
"compile",
+                    (MojoBinding) 
target.getBuildBinding().getCompile().getBindings().get( 0 ) );
+        assertMojo( "group", "artifact", "compile", (MojoBinding) 
target.getBuildBinding().getCompile().getBindings().get( 1 ) );
+    }
+
+    public void 
testModifyExistingLifecycleBindings_AddTwoMojosDirectlyAndTwoViaModifiersModifier()
+        throws LifecyclePlannerException
+    {
+        LifecycleBindings modifier = new LifecycleBindings();
+        modifier.getCleanBinding().getClean().addBinding( newMojo( "group2", 
"artifact", "clean" ) );
+        modifier.getBuildBinding().getCompile().addBinding( newMojo( "group2", 
"artifact", "compile" ) );
+
+        LifecycleBindings overlay = new LifecycleBindings();
+        overlay.getCleanBinding().getClean().addBinding( newMojo( "group", 
"artifact", "clean" ) );
+        overlay.getBuildBinding().getCompile().addBinding( newMojo( "group", 
"artifact", "compile" ) );
+
+        LifecycleBindings target = new LifecycleBindings();
+        target.getCleanBinding().getClean().addBinding( newMojo( 
"org.apache.maven.plugins", "maven-clean-plugin", "clean" ) );
+        target.getBuildBinding().getCompile().addBinding(
+                                                          newMojo( 
"org.apache.maven.plugins", "maven-compiler-plugin", "compile" ) );
+
+        assertEquals( 1, 
target.getCleanBinding().getClean().getBindings().size() );
+        assertEquals( 1, 
target.getBuildBinding().getCompile().getBindings().size() );
+
+        LifecyclePlanModifier modder = new LifecycleOverlayPlanModifier( 
overlay );
+        modder.addModifier( new LifecycleOverlayPlanModifier( modifier ) );
+        
+        target = modder.modifyBindings( target );
+
+        assertEquals( 3, 
target.getCleanBinding().getClean().getBindings().size() );
+        assertMojo( "org.apache.maven.plugins", "maven-clean-plugin", "clean",
+                    (MojoBinding) 
target.getCleanBinding().getClean().getBindings().get( 0 ) );
+        assertMojo( "group", "artifact", "clean", (MojoBinding) 
target.getCleanBinding().getClean().getBindings().get( 1 ) );
+        assertMojo( "group2", "artifact", "clean", (MojoBinding) 
target.getCleanBinding().getClean().getBindings().get( 2 ) );
+
+        assertEquals( 3, 
target.getBuildBinding().getCompile().getBindings().size() );
+        assertMojo( "org.apache.maven.plugins", "maven-compiler-plugin", 
"compile",
+                    (MojoBinding) 
target.getBuildBinding().getCompile().getBindings().get( 0 ) );
+        assertMojo( "group", "artifact", "compile", (MojoBinding) 
target.getBuildBinding().getCompile().getBindings().get( 1 ) );
+        assertMojo( "group2", "artifact", "compile", (MojoBinding) 
target.getBuildBinding().getCompile().getBindings().get( 2 ) );
+    }
+
+    private void assertMojo( String groupId, String artifactId, String goal, 
MojoBinding binding )
+    {
+        assertEquals( groupId, binding.getGroupId() );
+        assertEquals( artifactId, binding.getArtifactId() );
+        assertEquals( goal, binding.getGoal() );
+    }
+
+    private MojoBinding newMojo( String groupId, String artifactId, String 
goal )
+    {
+        MojoBinding binding = new MojoBinding();
+        binding.setGroupId( groupId );
+        binding.setArtifactId( artifactId );
+        binding.setGoal( goal );
+
+        return binding;
+    }
+}

Propchange: 
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/test/java/org/apache/maven/lifecycle/plan/LifecycleOverlayPlanModifierTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/components/branches/2.1-lifecycle-refactor/maven-core/src/test/java/org/apache/maven/lifecycle/plan/LifecycleOverlayPlanModifierTest.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: 
maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java?view=diff&rev=516623&r1=516622&r2=516623
==============================================================================
--- 
maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java
 (original)
+++ 
maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/main/java/org/apache/maven/lifecycle/LifecycleUtils.java
 Fri Mar  9 16:33:57 2007
@@ -188,6 +188,13 @@
     public static LifecycleBindings mergeBindings( LifecycleBindings 
existingBindings, LifecycleBindings newBindings,
                                                    LifecycleBindings 
defaultBindings, boolean mergeConfigIfExecutionIdMatches )
     {
+        return mergeBindings( existingBindings, newBindings, defaultBindings, 
mergeConfigIfExecutionIdMatches, false );
+    }
+
+    public static LifecycleBindings mergeBindings( LifecycleBindings 
existingBindings, LifecycleBindings newBindings,
+                                                   LifecycleBindings 
defaultBindings, boolean mergeConfigIfExecutionIdMatches,
+                                                   boolean 
reverseConfigMergeDirection )
+    {
         LifecycleBindings result = new LifecycleBindings();
         result.setPackaging( newBindings.getPackaging() );
 
@@ -259,7 +266,16 @@
                                 if ( matchingBinding != null )
                                 {
                                     Xpp3Dom existingConfig = new Xpp3Dom( 
(Xpp3Dom) matchingBinding.getConfiguration() );
-                                    Xpp3Dom configuration = 
Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) mojoBinding.getConfiguration(), existingConfig 
);
+                                    
+                                    Xpp3Dom configuration;
+                                    if ( reverseConfigMergeDirection )
+                                    {
+                                        configuration = Xpp3Dom.mergeXpp3Dom( 
existingConfig, (Xpp3Dom) mojoBinding.getConfiguration() );
+                                    }
+                                    else
+                                    {
+                                        configuration = Xpp3Dom.mergeXpp3Dom( 
(Xpp3Dom) mojoBinding.getConfiguration(), existingConfig );
+                                    }
 
                                     mojoBinding.setConfiguration( 
configuration );
                                     

Modified: 
maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/maven/lifecycle/LifecycleUtilsTest.java
URL: 
http://svn.apache.org/viewvc/maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/maven/lifecycle/LifecycleUtilsTest.java?view=diff&rev=516623&r1=516622&r2=516623
==============================================================================
--- 
maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/maven/lifecycle/LifecycleUtilsTest.java
 (original)
+++ 
maven/components/branches/2.1-lifecycle-refactor/maven-lifecycle/src/test/java/org/apache/maven/lifecycle/LifecycleUtilsTest.java
 Fri Mar  9 16:33:57 2007
@@ -285,7 +285,7 @@
         MojoBinding binding2 = newMojoBinding( "group", "artifact", "goal2" );
         cbOrig2.getClean().addBinding( binding2 );
 
-        LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, 
bOrig2, new LifecycleBindings(), false );
+        LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, 
bOrig2, new LifecycleBindings(), false, false );
 
         assertNotNull( result );
         
@@ -325,7 +325,7 @@
         MojoBinding binding2 = newMojoBinding( "group", "artifact", "goal2" );
         cbOrig2.getClean().addBinding( binding2 );
 
-        LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, new 
LifecycleBindings(), bOrig2, false );
+        LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, new 
LifecycleBindings(), bOrig2, false, false );
 
         assertNotNull( result );
         
@@ -357,7 +357,7 @@
         MojoBinding binding2 = newMojoBinding( "group", "artifact", "goal2" );
         bbOrig.getCompile().addBinding( binding2 );
 
-        LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, new 
LifecycleBindings(), bOrig2, false );
+        LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, new 
LifecycleBindings(), bOrig2, false, false );
 
         assertNotNull( result );
         
@@ -427,7 +427,7 @@
         
         cbOrig2.getClean().addBinding( binding2 );
 
-        LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, 
bOrig2, new LifecycleBindings(), true );
+        LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, 
bOrig2, new LifecycleBindings(), true, false );
 
         assertNotNull( result );
         
@@ -451,6 +451,68 @@
         
         assertNotNull( cResult );
         assertEquals( "value2", cResult.getChild( "child" ).getValue() );
+        assertEquals( "val", cResult.getChild( "key" ).getValue() );
+    }
+
+    public void 
testMergeBindings_MergeConfigsWithExistingAsDominant_EmptyDefaults()
+    {
+        LifecycleBindings bOrig = new LifecycleBindings();
+        CleanBinding cbOrig = bOrig.getCleanBinding();
+        MojoBinding binding = newMojoBinding( "group", "artifact", "goal" );
+        binding.setOrigin( "non-default" );
+        
+        Xpp3Dom config = new Xpp3Dom( "configuration" );
+        Xpp3Dom child = new Xpp3Dom( "child" );
+        child.setValue( "value" );
+        config.addChild( child );
+        
+        binding.setConfiguration( config );
+        
+        cbOrig.getClean().addBinding( binding );
+
+        LifecycleBindings bOrig2 = new LifecycleBindings();
+        CleanBinding cbOrig2 = bOrig2.getCleanBinding();
+        MojoBinding binding2 = newMojoBinding( "group", "artifact", "goal" );
+        
+        Xpp3Dom config2 = new Xpp3Dom( "configuration" );
+        
+        Xpp3Dom child2 = new Xpp3Dom( "child" );
+        child2.setValue( "value2" );
+        
+        Xpp3Dom child3 = new Xpp3Dom( "key" );
+        child3.setValue( "val" );
+        
+        config2.addChild( child2 );
+        config2.addChild( child3 );
+        
+        binding2.setConfiguration( config2 );
+        
+        cbOrig2.getClean().addBinding( binding2 );
+
+        LifecycleBindings result = LifecycleUtils.mergeBindings( bOrig, 
bOrig2, new LifecycleBindings(), true, true );
+
+        assertNotNull( result );
+        
+        CleanBinding cbResult = result.getCleanBinding();
+        assertNotSame( cbOrig, cbResult );
+
+        List mojos = cbResult.getClean().getBindings();
+        assertNotNull( mojos );
+        assertEquals( 1, mojos.size() );
+
+        MojoBinding bResult = (MojoBinding) mojos.get( 0 );
+        
+        assertNotSame( binding, bResult );
+
+        assertEquals( "group", bResult.getGroupId() );
+        assertEquals( "artifact", bResult.getArtifactId() );
+        assertEquals( "goal", bResult.getGoal() );
+        assertEquals( "non-default", bResult.getOrigin() );
+        
+        Xpp3Dom cResult = (Xpp3Dom) bResult.getConfiguration();
+        
+        assertNotNull( cResult );
+        assertEquals( "value", cResult.getChild( "child" ).getValue() );
         assertEquals( "val", cResult.getChild( "key" ).getValue() );
     }
 


Reply via email to