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() );
}