aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/maven/apache-maven-3.3.3/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java')
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java553
1 files changed, 553 insertions, 0 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java b/framework/src/maven/apache-maven-3.3.3/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
new file mode 100644
index 00000000..99b07e34
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
@@ -0,0 +1,553 @@
+package org.apache.maven.lifecycle;
+
+/*
+ * 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 java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.maven.AbstractCoreMavenComponentTestCase;
+import org.apache.maven.exception.ExceptionHandler;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.execution.MojoExecutionEvent;
+import org.apache.maven.execution.MojoExecutionListener;
+import org.apache.maven.execution.ProjectDependencyGraph;
+import org.apache.maven.execution.ProjectExecutionEvent;
+import org.apache.maven.execution.ProjectExecutionListener;
+import org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator;
+import org.apache.maven.lifecycle.internal.ExecutionPlanItem;
+import org.apache.maven.lifecycle.internal.LifecycleExecutionPlanCalculator;
+import org.apache.maven.lifecycle.internal.LifecycleTask;
+import org.apache.maven.lifecycle.internal.LifecycleTaskSegmentCalculator;
+import org.apache.maven.lifecycle.internal.MojoDescriptorCreator;
+import org.apache.maven.lifecycle.internal.TaskSegment;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.MojoExecution;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoNotFoundException;
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.component.annotations.Requirement;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+
+public class LifecycleExecutorTest
+ extends AbstractCoreMavenComponentTestCase
+{
+ @Requirement
+ private DefaultLifecycleExecutor lifecycleExecutor;
+
+ @Requirement
+ private DefaultLifecycleTaskSegmentCalculator lifeCycleTaskSegmentCalculator;
+
+ @Requirement
+ private LifecycleExecutionPlanCalculator lifeCycleExecutionPlanCalculator;
+
+ @Requirement
+ private MojoDescriptorCreator mojoDescriptorCreator;
+
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ lifecycleExecutor = (DefaultLifecycleExecutor) lookup( LifecycleExecutor.class );
+ lifeCycleTaskSegmentCalculator =
+ (DefaultLifecycleTaskSegmentCalculator) lookup( LifecycleTaskSegmentCalculator.class );
+ lifeCycleExecutionPlanCalculator = lookup( LifecycleExecutionPlanCalculator.class );
+ mojoDescriptorCreator = lookup( MojoDescriptorCreator.class );
+ lookup( ExceptionHandler.class );
+ }
+
+ @Override
+ protected void tearDown()
+ throws Exception
+ {
+ lifecycleExecutor = null;
+ super.tearDown();
+ }
+
+ protected String getProjectsDirectory()
+ {
+ return "src/test/projects/lifecycle-executor";
+ }
+
+ // -----------------------------------------------------------------------------------------------
+ // Tests which exercise the lifecycle executor when it is dealing with default lifecycle phases.
+ // -----------------------------------------------------------------------------------------------
+
+ public void testCalculationOfBuildPlanWithIndividualTaskWherePluginIsSpecifiedInThePom()
+ throws Exception
+ {
+ // We are doing something like "mvn resources:resources" where no version is specified but this
+ // project we are working on has the version specified in the POM so the version should come from there.
+ File pom = getProject( "project-basic" );
+ MavenSession session = createMavenSession( pom );
+ assertEquals( "project-basic", session.getCurrentProject().getArtifactId() );
+ assertEquals( "1.0", session.getCurrentProject().getVersion() );
+ List<MojoExecution> executionPlan = getExecutions( calculateExecutionPlan( session, "resources:resources" ) );
+ assertEquals( 1, executionPlan.size() );
+ MojoExecution mojoExecution = executionPlan.get( 0 );
+ assertNotNull( mojoExecution );
+ assertEquals( "org.apache.maven.plugins",
+ mojoExecution.getMojoDescriptor().getPluginDescriptor().getGroupId() );
+ assertEquals( "maven-resources-plugin",
+ mojoExecution.getMojoDescriptor().getPluginDescriptor().getArtifactId() );
+ assertEquals( "0.1", mojoExecution.getMojoDescriptor().getPluginDescriptor().getVersion() );
+ }
+
+ public void testCalculationOfBuildPlanWithIndividualTaskOfTheCleanLifecycle()
+ throws Exception
+ {
+ // We are doing something like "mvn clean:clean" where no version is specified but this
+ // project we are working on has the version specified in the POM so the version should come from there.
+ File pom = getProject( "project-basic" );
+ MavenSession session = createMavenSession( pom );
+ assertEquals( "project-basic", session.getCurrentProject().getArtifactId() );
+ assertEquals( "1.0", session.getCurrentProject().getVersion() );
+ List<MojoExecution> executionPlan = getExecutions( calculateExecutionPlan( session, "clean" ) );
+ assertEquals( 1, executionPlan.size() );
+ MojoExecution mojoExecution = executionPlan.get( 0 );
+ assertNotNull( mojoExecution );
+ assertEquals( "org.apache.maven.plugins",
+ mojoExecution.getMojoDescriptor().getPluginDescriptor().getGroupId() );
+ assertEquals( "maven-clean-plugin", mojoExecution.getMojoDescriptor().getPluginDescriptor().getArtifactId() );
+ assertEquals( "0.1", mojoExecution.getMojoDescriptor().getPluginDescriptor().getVersion() );
+ }
+
+ public void testCalculationOfBuildPlanWithIndividualTaskOfTheCleanCleanGoal()
+ throws Exception
+ {
+ // We are doing something like "mvn clean:clean" where no version is specified but this
+ // project we are working on has the version specified in the POM so the version should come from there.
+ File pom = getProject( "project-basic" );
+ MavenSession session = createMavenSession( pom );
+ assertEquals( "project-basic", session.getCurrentProject().getArtifactId() );
+ assertEquals( "1.0", session.getCurrentProject().getVersion() );
+ List<MojoExecution> executionPlan = getExecutions( calculateExecutionPlan( session, "clean:clean" ) );
+ assertEquals( 1, executionPlan.size() );
+ MojoExecution mojoExecution = executionPlan.get( 0 );
+ assertNotNull( mojoExecution );
+ assertEquals( "org.apache.maven.plugins",
+ mojoExecution.getMojoDescriptor().getPluginDescriptor().getGroupId() );
+ assertEquals( "maven-clean-plugin", mojoExecution.getMojoDescriptor().getPluginDescriptor().getArtifactId() );
+ assertEquals( "0.1", mojoExecution.getMojoDescriptor().getPluginDescriptor().getVersion() );
+ }
+
+ List<MojoExecution> getExecutions( MavenExecutionPlan mavenExecutionPlan )
+ {
+ List<MojoExecution> result = new ArrayList<MojoExecution>();
+ for ( ExecutionPlanItem executionPlanItem : mavenExecutionPlan )
+ {
+ result.add( executionPlanItem.getMojoExecution() );
+ }
+ return result;
+ }
+
+ // We need to take in multiple lifecycles
+ public void testCalculationOfBuildPlanTasksOfTheCleanLifecycleAndTheInstallLifecycle()
+ throws Exception
+ {
+ File pom = getProject( "project-with-additional-lifecycle-elements" );
+ MavenSession session = createMavenSession( pom );
+ assertEquals( "project-with-additional-lifecycle-elements", session.getCurrentProject().getArtifactId() );
+ assertEquals( "1.0", session.getCurrentProject().getVersion() );
+ List<MojoExecution> executionPlan = getExecutions( calculateExecutionPlan( session, "clean", "install" ) );
+
+ //[01] clean:clean
+ //[02] resources:resources
+ //[03] compiler:compile
+ //[04] it:generate-metadata
+ //[05] resources:testResources
+ //[06] compiler:testCompile
+ //[07] it:generate-test-metadata
+ //[08] surefire:test
+ //[09] jar:jar
+ //[10] install:install
+ //
+ assertEquals( 10, executionPlan.size() );
+
+ assertEquals( "clean:clean", executionPlan.get( 0 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "resources:resources", executionPlan.get( 1 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "compiler:compile", executionPlan.get( 2 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "it:generate-metadata", executionPlan.get( 3 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "resources:testResources", executionPlan.get( 4 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "compiler:testCompile", executionPlan.get( 5 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "it:generate-test-metadata", executionPlan.get( 6 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "surefire:test", executionPlan.get( 7 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "jar:jar", executionPlan.get( 8 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "install:install", executionPlan.get( 9 ).getMojoDescriptor().getFullGoalName() );
+ }
+
+ // We need to take in multiple lifecycles
+ public void testCalculationOfBuildPlanWithMultipleExecutionsOfModello()
+ throws Exception
+ {
+ File pom = getProject( "project-with-multiple-executions" );
+ MavenSession session = createMavenSession( pom );
+ assertEquals( "project-with-multiple-executions", session.getCurrentProject().getArtifactId() );
+ assertEquals( "1.0.1", session.getCurrentProject().getVersion() );
+
+ MavenExecutionPlan plan = calculateExecutionPlan( session, "clean", "install" );
+
+ List<MojoExecution> executions = getExecutions( plan );
+
+ //[01] clean:clean
+ //[02] modello:xpp3-writer
+ //[03] modello:java
+ //[04] modello:xpp3-reader
+ //[05] modello:xpp3-writer
+ //[06] modello:java
+ //[07] modello:xpp3-reader
+ //[08] plugin:descriptor
+ //[09] resources:resources
+ //[10] compiler:compile
+ //[11] resources:testResources
+ //[12] compiler:testCompile
+ //[13] surefire:test
+ //[14] jar:jar
+ //[15] plugin:addPluginArtifactMetadata
+ //[16] install:install
+ //
+
+ assertEquals( 16, executions.size() );
+
+ assertEquals( "clean:clean", executions.get( 0 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "it:xpp3-writer", executions.get( 1 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "it:java", executions.get( 2 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "it:xpp3-reader", executions.get( 3 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "it:xpp3-writer", executions.get( 4 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "it:java", executions.get( 5 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "it:xpp3-reader", executions.get( 6 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "resources:resources", executions.get( 7 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "compiler:compile", executions.get( 8 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "plugin:descriptor", executions.get( 9 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "resources:testResources", executions.get( 10 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "compiler:testCompile", executions.get( 11 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "surefire:test", executions.get( 12 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "jar:jar", executions.get( 13 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "plugin:addPluginArtifactMetadata", executions.get( 14 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "install:install", executions.get( 15 ).getMojoDescriptor().getFullGoalName() );
+
+ assertEquals( "src/main/mdo/remote-resources.mdo",
+ new MojoExecutionXPathContainer( executions.get( 1 ) ).getValue(
+ "configuration/models[1]/model" ) );
+ assertEquals( "src/main/mdo/supplemental-model.mdo",
+ new MojoExecutionXPathContainer( executions.get( 4 ) ).getValue(
+ "configuration/models[1]/model" ) );
+ }
+
+ public void testLifecycleQueryingUsingADefaultLifecyclePhase()
+ throws Exception
+ {
+ File pom = getProject( "project-with-additional-lifecycle-elements" );
+ MavenSession session = createMavenSession( pom );
+ assertEquals( "project-with-additional-lifecycle-elements", session.getCurrentProject().getArtifactId() );
+ assertEquals( "1.0", session.getCurrentProject().getVersion() );
+ List<MojoExecution> executionPlan = getExecutions( calculateExecutionPlan( session, "package" ) );
+
+ //[01] resources:resources
+ //[02] compiler:compile
+ //[03] it:generate-metadata
+ //[04] resources:testResources
+ //[05] compiler:testCompile
+ //[06] plexus-component-metadata:generate-test-metadata
+ //[07] surefire:test
+ //[08] jar:jar
+ //
+ assertEquals( 8, executionPlan.size() );
+
+ assertEquals( "resources:resources", executionPlan.get( 0 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "compiler:compile", executionPlan.get( 1 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "it:generate-metadata", executionPlan.get( 2 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "resources:testResources", executionPlan.get( 3 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "compiler:testCompile", executionPlan.get( 4 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "it:generate-test-metadata", executionPlan.get( 5 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "surefire:test", executionPlan.get( 6 ).getMojoDescriptor().getFullGoalName() );
+ assertEquals( "jar:jar", executionPlan.get( 7 ).getMojoDescriptor().getFullGoalName() );
+ }
+
+ public void testLifecyclePluginsRetrievalForDefaultLifecycle()
+ throws Exception
+ {
+ List<Plugin> plugins =
+ new ArrayList<Plugin>( lifecycleExecutor.getPluginsBoundByDefaultToAllLifecycles( "jar" ) );
+
+ assertEquals( 8, plugins.size() );
+ }
+
+ public void testPluginConfigurationCreation()
+ throws Exception
+ {
+ File pom = getProject( "project-with-additional-lifecycle-elements" );
+ MavenSession session = createMavenSession( pom );
+ MojoDescriptor mojoDescriptor =
+ mojoDescriptorCreator.getMojoDescriptor( "org.apache.maven.its.plugins:maven-it-plugin:0.1:java", session,
+ session.getCurrentProject() );
+ Xpp3Dom dom = MojoDescriptorCreator.convert( mojoDescriptor );
+ System.out.println( dom );
+ }
+
+ MavenExecutionPlan calculateExecutionPlan( MavenSession session, String... tasks )
+ throws Exception
+ {
+ List<TaskSegment> taskSegments =
+ lifeCycleTaskSegmentCalculator.calculateTaskSegments( session, Arrays.asList( tasks ) );
+
+ TaskSegment mergedSegment = new TaskSegment( false );
+
+ for ( TaskSegment taskSegment : taskSegments )
+ {
+ mergedSegment.getTasks().addAll( taskSegment.getTasks() );
+ }
+
+ return lifeCycleExecutionPlanCalculator.calculateExecutionPlan( session, session.getCurrentProject(),
+ mergedSegment.getTasks() );
+ }
+
+ public void testInvalidGoalName()
+ throws Exception
+ {
+ File pom = getProject( "project-basic" );
+ MavenSession session = createMavenSession( pom );
+ try
+ {
+ getExecutions( calculateExecutionPlan( session, "resources:" ) );
+ fail( "expected a MojoNotFoundException" );
+ }
+ catch ( MojoNotFoundException e )
+ {
+ assertEquals( "", e.getGoal() );
+ }
+
+ try
+ {
+ getExecutions( calculateExecutionPlan( session, "org.apache.maven.plugins:maven-resources-plugin:0.1:resources:toomany" ) );
+ fail( "expected a MojoNotFoundException" );
+ }
+ catch ( MojoNotFoundException e )
+ {
+ assertEquals( "resources:toomany", e.getGoal() );
+ }
+ }
+
+
+ public void testPluginPrefixRetrieval()
+ throws Exception
+ {
+ File pom = getProject( "project-basic" );
+ MavenSession session = createMavenSession( pom );
+ Plugin plugin = mojoDescriptorCreator.findPluginForPrefix( "resources", session );
+ assertEquals( "org.apache.maven.plugins", plugin.getGroupId() );
+ assertEquals( "maven-resources-plugin", plugin.getArtifactId() );
+ }
+
+ // Prefixes
+
+ public void testFindingPluginPrefixforCleanClean()
+ throws Exception
+ {
+ File pom = getProject( "project-basic" );
+ MavenSession session = createMavenSession( pom );
+ Plugin plugin = mojoDescriptorCreator.findPluginForPrefix( "clean", session );
+ assertNotNull( plugin );
+ }
+
+ public void testSetupMojoExecution()
+ throws Exception
+ {
+ File pom = getProject( "mojo-configuration" );
+
+ MavenSession session = createMavenSession( pom );
+
+ LifecycleTask task = new LifecycleTask( "generate-sources" );
+ MavenExecutionPlan executionPlan =
+ lifeCycleExecutionPlanCalculator.calculateExecutionPlan( session, session.getCurrentProject(),
+ Arrays.asList( (Object) task ), false );
+
+ MojoExecution execution = executionPlan.getMojoExecutions().get(0);
+ assertEquals(execution.toString(), "maven-it-plugin", execution.getArtifactId());
+ assertNull(execution.getConfiguration());
+
+ lifeCycleExecutionPlanCalculator.setupMojoExecution( session, session.getCurrentProject(), execution );
+ assertNotNull(execution.getConfiguration());
+ assertEquals("1.0", execution.getConfiguration().getChild( "version" ).getAttribute( "default-value" ));
+ }
+
+ public void testExecutionListeners()
+ throws Exception
+ {
+ final File pom = getProject( "project-basic" );
+ final MavenSession session = createMavenSession( pom );
+ session.setProjectDependencyGraph( new ProjectDependencyGraph()
+ {
+ public List<MavenProject> getUpstreamProjects( MavenProject project, boolean transitive )
+ {
+ return Collections.emptyList();
+ }
+
+ public List<MavenProject> getSortedProjects()
+ {
+ return Collections.singletonList( session.getCurrentProject() );
+ }
+
+ public List<MavenProject> getDownstreamProjects( MavenProject project, boolean transitive )
+ {
+ return Collections.emptyList();
+ }
+
+ public java.util.List<MavenProject> getAllSortedProjects()
+ {
+ return Collections.emptyList();
+ }
+ } );
+
+ final List<String> log = new ArrayList<String>();
+
+ MojoExecutionListener mojoListener = new MojoExecutionListener()
+ {
+ public void beforeMojoExecution( MojoExecutionEvent event )
+ throws MojoExecutionException
+ {
+ assertNotNull( event.getSession() );
+ assertNotNull( event.getProject() );
+ assertNotNull( event.getExecution() );
+ assertNotNull( event.getMojo() );
+ assertNull( event.getCause() );
+
+ log.add( "beforeMojoExecution " + event.getProject().getArtifactId() + ":"
+ + event.getExecution().getExecutionId() );
+ }
+
+ public void afterMojoExecutionSuccess( MojoExecutionEvent event )
+ throws MojoExecutionException
+ {
+ assertNotNull( event.getSession() );
+ assertNotNull( event.getProject() );
+ assertNotNull( event.getExecution() );
+ assertNotNull( event.getMojo() );
+ assertNull( event.getCause() );
+
+ log.add( "afterMojoExecutionSuccess " + event.getProject().getArtifactId() + ":"
+ + event.getExecution().getExecutionId() );
+ }
+
+ public void afterExecutionFailure( MojoExecutionEvent event )
+ {
+ assertNotNull( event.getSession() );
+ assertNotNull( event.getProject() );
+ assertNotNull( event.getExecution() );
+ assertNotNull( event.getMojo() );
+ assertNotNull( event.getCause() );
+
+ log.add( "afterExecutionFailure " + event.getProject().getArtifactId() + ":"
+ + event.getExecution().getExecutionId() );
+ }
+ };
+ ProjectExecutionListener projectListener = new ProjectExecutionListener()
+ {
+ public void beforeProjectExecution( ProjectExecutionEvent event )
+ throws LifecycleExecutionException
+ {
+ assertNotNull( event.getSession() );
+ assertNotNull( event.getProject() );
+ assertNull( event.getExecutionPlan() );
+ assertNull( event.getCause() );
+
+ log.add( "beforeProjectExecution " + event.getProject().getArtifactId() );
+ }
+
+ public void beforeProjectLifecycleExecution( ProjectExecutionEvent event )
+ throws LifecycleExecutionException
+ {
+ assertNotNull( event.getSession() );
+ assertNotNull( event.getProject() );
+ assertNotNull( event.getExecutionPlan() );
+ assertNull( event.getCause() );
+
+ log.add( "beforeProjectLifecycleExecution " + event.getProject().getArtifactId() );
+ }
+
+ public void afterProjectExecutionSuccess( ProjectExecutionEvent event )
+ throws LifecycleExecutionException
+ {
+ assertNotNull( event.getSession() );
+ assertNotNull( event.getProject() );
+ assertNotNull( event.getExecutionPlan() );
+ assertNull( event.getCause() );
+
+ log.add( "afterProjectExecutionSuccess " + event.getProject().getArtifactId() );
+ }
+
+ public void afterProjectExecutionFailure( ProjectExecutionEvent event )
+ {
+ assertNotNull( event.getSession() );
+ assertNotNull( event.getProject() );
+ assertNull( event.getExecutionPlan() );
+ assertNotNull( event.getCause() );
+
+ log.add( "afterProjectExecutionFailure " + event.getProject().getArtifactId() );
+ }
+ };
+ lookup( DelegatingProjectExecutionListener.class ).addProjectExecutionListener( projectListener );
+ lookup( DelegatingMojoExecutionListener.class ).addMojoExecutionListener( mojoListener );
+
+ try
+ {
+ lifecycleExecutor.execute( session );
+ }
+ finally
+ {
+ lookup( DelegatingProjectExecutionListener.class ).removeProjectExecutionListener( projectListener );
+ lookup( DelegatingMojoExecutionListener.class ).removeMojoExecutionListener( mojoListener );
+ }
+
+ List<String> expectedLog = Arrays.asList( "beforeProjectExecution project-basic", //
+ "beforeProjectLifecycleExecution project-basic", //
+ "beforeMojoExecution project-basic:default-resources", //
+ "afterMojoExecutionSuccess project-basic:default-resources", //
+ "beforeMojoExecution project-basic:default-compile", //
+ "afterMojoExecutionSuccess project-basic:default-compile", //
+ "beforeMojoExecution project-basic:default-testResources", //
+ "afterMojoExecutionSuccess project-basic:default-testResources", //
+ "beforeMojoExecution project-basic:default-testCompile", //
+ "afterMojoExecutionSuccess project-basic:default-testCompile", //
+ "beforeMojoExecution project-basic:default-test", //
+ "afterMojoExecutionSuccess project-basic:default-test", //
+ "beforeMojoExecution project-basic:default-jar", //
+ "afterMojoExecutionSuccess project-basic:default-jar", //
+ "afterProjectExecutionSuccess project-basic" //
+ );
+
+ assertEventLog( expectedLog, log );
+ }
+
+ private static void assertEventLog( List<String> expectedList, List<String> actualList )
+ {
+ assertEquals( toString( expectedList ), toString( actualList ) );
+ }
+
+ private static String toString( List<String> lines )
+ {
+ StringBuilder sb = new StringBuilder();
+ for ( String line : lines )
+ {
+ sb.append( line ).append( '\n' );
+ }
+ return sb.toString();
+ }
+}