Expand Up @@ -5,6 +5,7 @@

import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;

import org.eclipse.m2e.core.core.IMavenConstants;
import org.eclipse.m2e.core.internal.lifecycle.LifecycleMappingFactory;
import org.eclipse.m2e.core.internal.lifecycle.model.LifecycleMappingMetadataSource;
Expand All @@ -28,18 +29,13 @@ public void testDefaultMetadataSource() throws Exception {
IProject project = facade.getProject();
List<IMarker> errorMarkers = WorkspaceHelpers.findErrorMarkers(project);
assertNotNull(errorMarkers);
assertEquals(WorkspaceHelpers.toString(errorMarkers), 2, errorMarkers.size());
assertEquals(WorkspaceHelpers.toString(errorMarkers), 1, errorMarkers.size());

String expectedErrorMessage = "Lifecycle mapping \"missing default lifecycle mapping id for test-packaging-empty\" is not available. To enable full functionality, install the lifecycle mapping and run Maven->Update Project Configuration.";
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
expectedErrorMessage, 7 /*lineNumber*/, project);
WorkspaceHelpers.assertLifecycleIdErrorMarkerAttributes(marker,
"missing default lifecycle mapping id for test-packaging-empty");

expectedErrorMessage = "Unknown or missing lifecycle mapping (project packaging type=\"test-packaging-empty\")";
marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
7 /*lineNumber of <packaging> element*/, project);
WorkspaceHelpers.assertLifecyclePackagingErrorMarkerAttributes(marker, "test-packaging-empty");
}

// Tests that a lifecycle mapping declared in an eclipse extension has priority over default lifecycle mapping metadata
Expand Down Expand Up @@ -71,18 +67,13 @@ public void testReferencedFromPom() throws Exception {
IProject project = facade.getProject();
List<IMarker> errorMarkers = WorkspaceHelpers.findErrorMarkers(project);
assertNotNull(errorMarkers);
assertEquals(WorkspaceHelpers.toString(errorMarkers), 2, errorMarkers.size());
assertEquals(WorkspaceHelpers.toString(errorMarkers), 1, errorMarkers.size());

String expectedErrorMessage = "Lifecycle mapping \"no such lifecycle mapping for test-packaging-for-eclipse-extension - referenced from pom\" is not available. To enable full functionality, install the lifecycle mapping and run Maven->Update Project Configuration.";
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
expectedErrorMessage, 7 /*lineNumber*/, project);
WorkspaceHelpers.assertLifecycleIdErrorMarkerAttributes(marker,
"no such lifecycle mapping for test-packaging-for-eclipse-extension - referenced from pom");

expectedErrorMessage = "Unknown or missing lifecycle mapping (project packaging type=\"test-packaging-for-eclipse-extension\")";
marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
7 /*lineNumber of <packaging> element*/, project);
WorkspaceHelpers.assertLifecyclePackagingErrorMarkerAttributes(marker, "test-packaging-for-eclipse-extension");
}

// Tests that a lifecycle mapping embedded in pom has priority over lifecycle mapping declared in a metadata source referenced from pom
Expand All @@ -97,18 +88,13 @@ public void testEmbeddedInPom() throws Exception {
IProject project = facade.getProject();
List<IMarker> errorMarkers = WorkspaceHelpers.findErrorMarkers(project);
assertNotNull(errorMarkers);
assertEquals(WorkspaceHelpers.toString(errorMarkers), 2, errorMarkers.size());
assertEquals(WorkspaceHelpers.toString(errorMarkers), 1, errorMarkers.size());

String expectedErrorMessage = "Lifecycle mapping \"no such lifecycle mapping for test-packaging-for-eclipse-extension - embedded in pom\" is not available. To enable full functionality, install the lifecycle mapping and run Maven->Update Project Configuration.";
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
expectedErrorMessage, 7 /*lineNumber*/, project);
WorkspaceHelpers.assertLifecycleIdErrorMarkerAttributes(marker,
"no such lifecycle mapping for test-packaging-for-eclipse-extension - embedded in pom");

expectedErrorMessage = "Unknown or missing lifecycle mapping (project packaging type=\"test-packaging-for-eclipse-extension\")";
marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
7 /*lineNumber of <packaging> element*/, project);
WorkspaceHelpers.assertLifecyclePackagingErrorMarkerAttributes(marker, "test-packaging-for-eclipse-extension");
}

public void testParent() throws Exception {
Expand All @@ -126,16 +112,12 @@ public void testParent() throws Exception {
project = facade.getProject();
List<IMarker> errorMarkers = WorkspaceHelpers.findErrorMarkers(project);
assertNotNull(errorMarkers);
assertEquals(WorkspaceHelpers.toString(errorMarkers), 2, errorMarkers.size());
assertEquals(WorkspaceHelpers.toString(errorMarkers), 1, errorMarkers.size());
String expectedErrorMessage = "Lifecycle mapping \"no such lifecycle mapping for test-packaging-a - parent\" is not available. To enable full functionality, install the lifecycle mapping and run Maven->Update Project Configuration.";
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
expectedErrorMessage, 12 /*lineNumber*/, project);
WorkspaceHelpers.assertLifecycleIdErrorMarkerAttributes(marker,
"no such lifecycle mapping for test-packaging-a - parent");
expectedErrorMessage = "Unknown or missing lifecycle mapping (project packaging type=\"test-packaging-a\")";
marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
12 /*lineNumber of <packaging> element*/, project);
WorkspaceHelpers.assertLifecyclePackagingErrorMarkerAttributes(marker, "test-packaging-a");

facade = importMavenProject(
"projects/lifecyclemapping/lifecycleMappingMetadata/LifecycleMappingMetadataPrioritiesTest",
Expand All @@ -144,15 +126,11 @@ public void testParent() throws Exception {
project = facade.getProject();
errorMarkers = WorkspaceHelpers.findErrorMarkers(project);
assertNotNull(errorMarkers);
assertEquals(WorkspaceHelpers.toString(errorMarkers), 2, errorMarkers.size());
assertEquals(WorkspaceHelpers.toString(errorMarkers), 1, errorMarkers.size());
expectedErrorMessage = "Lifecycle mapping \"no such lifecycle mapping for test-packaging-a - override\" is not available. To enable full functionality, install the lifecycle mapping and run Maven->Update Project Configuration.";
marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
12 /*lineNumber*/, project);
WorkspaceHelpers.assertLifecycleIdErrorMarkerAttributes(marker,
"no such lifecycle mapping for test-packaging-a - override");
expectedErrorMessage = "Unknown or missing lifecycle mapping (project packaging type=\"test-packaging-a\")";
marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
12 /*lineNumber of <packaging> element*/, project);
WorkspaceHelpers.assertLifecyclePackagingErrorMarkerAttributes(marker, "test-packaging-a");
}
}
Expand Up @@ -19,11 +19,13 @@
import java.util.Map;
import java.util.Set;

import org.apache.maven.execution.MavenExecutionRequest;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.CoreException;

import org.apache.maven.execution.MavenExecutionRequest;

import org.eclipse.m2e.core.core.IMavenConstants;
import org.eclipse.m2e.core.internal.lifecycle.InvalidLifecycleMapping;
import org.eclipse.m2e.core.internal.lifecycle.LifecycleMappingFactory;
Expand All @@ -32,6 +34,7 @@
import org.eclipse.m2e.core.internal.lifecycle.model.LifecycleMappingMetadataSource;
import org.eclipse.m2e.core.internal.lifecycle.model.PluginExecutionAction;
import org.eclipse.m2e.core.internal.lifecycle.model.PluginExecutionMetadata;
import org.eclipse.m2e.core.internal.markers.MarkerLocation;
import org.eclipse.m2e.core.internal.markers.MavenProblemInfo;
import org.eclipse.m2e.core.internal.project.registry.MavenProjectFacade;
import org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager;
Expand Down Expand Up @@ -84,7 +87,8 @@ public void testMissingLifecycleMappingMetadata() throws Exception {

expectedErrorMessage = "Unknown or missing lifecycle mapping (project packaging type=\"jar\")";
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
expectedErrorMessage, 1 /*lineNumber*/, project);
expectedErrorMessage, null /*lineNumber*/, project);
WorkspaceHelpers.assertMarkerLocation(new MarkerLocation(7, 2, 13), marker);
WorkspaceHelpers.assertLifecyclePackagingErrorMarkerAttributes(marker, "jar");

ILifecycleMapping lifecycleMapping = projectConfigurationManager.getLifecycleMapping(facade);
Expand Down Expand Up @@ -304,11 +308,11 @@ public void testNotCoveredMojoExecutions() throws Exception {
assertEquals(WorkspaceHelpers.toString(errorMarkers), 2, errorMarkers.size());
String expectedErrorMessage = "Plugin execution not covered by lifecycle configuration: org.eclipse.m2e.test.lifecyclemapping:test-lifecyclemapping-plugin:1.0.0:test-goal-1 (execution: default-test-goal-1, phase: process-resources)";
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
expectedErrorMessage, 13 /*lineNumber <artifactId> of plugin def*/, project);
expectedErrorMessage, 11 /*lineNumber <plugin> of plugin def*/, project);
WorkspaceHelpers.assertErrorMarkerAttributes(marker, notCoveredMojoExecutions.get(0));
expectedErrorMessage = "Plugin execution not covered by lifecycle configuration: org.eclipse.m2e.test.lifecyclemapping:test-lifecyclemapping-plugin:1.0.0:test-goal-2 (execution: default-test-goal-2, phase: compile)";
marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
13 /*lineNumber <artifactId> of plugin def*/, project);
11 /*lineNumber <plugin> of plugin def*/, project);
WorkspaceHelpers.assertErrorMarkerAttributes(marker, notCoveredMojoExecutions.get(1));
}

Expand All @@ -317,31 +321,24 @@ public void testMissingMapping() throws Exception {
assertNotNull("Expected not null MavenProjectFacade", facade);
IProject project = facade.getProject();
List<IMarker> errorMarkers = WorkspaceHelpers.findErrorMarkers(project);
assertEquals(WorkspaceHelpers.toString(errorMarkers), 2, errorMarkers.size());
assertEquals(WorkspaceHelpers.toString(errorMarkers), 1, errorMarkers.size());
String expectedErrorMessage = "Lifecycle mapping \"unknown-or-missing\" is not available. To enable full functionality, install the lifecycle mapping and run Maven->Update Project Configuration.";
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
expectedErrorMessage, 1 /*lineNumber*/, project);
expectedErrorMessage, null /*lineNumber*/, project);
WorkspaceHelpers.assertMarkerLocation(new MarkerLocation(7, 2, 13), marker);
WorkspaceHelpers.assertLifecycleIdErrorMarkerAttributes(marker, "unknown-or-missing");
expectedErrorMessage = "Unknown or missing lifecycle mapping (project packaging type=\"jar\")";
marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
WorkspaceHelpers.assertLifecyclePackagingErrorMarkerAttributes(marker, "jar");

ILifecycleMapping lifecycleMapping = projectConfigurationManager.getLifecycleMapping(facade);
assertTrue(lifecycleMapping instanceof InvalidLifecycleMapping);

project.build(IncrementalProjectBuilder.FULL_BUILD, monitor);
waitForJobsToComplete();
errorMarkers = WorkspaceHelpers.findErrorMarkers(project);
assertEquals(WorkspaceHelpers.toString(errorMarkers), 2, errorMarkers.size());
assertEquals(WorkspaceHelpers.toString(errorMarkers), 1, errorMarkers.size());
expectedErrorMessage = "Lifecycle mapping \"unknown-or-missing\" is not available. To enable full functionality, install the lifecycle mapping and run Maven->Update Project Configuration.";
marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
null /*lineNumber*/, project);
WorkspaceHelpers.assertLifecycleIdErrorMarkerAttributes(marker, "unknown-or-missing");
expectedErrorMessage = "Unknown or missing lifecycle mapping (project packaging type=\"jar\")";
marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
WorkspaceHelpers.assertLifecyclePackagingErrorMarkerAttributes(marker, "jar");
}

public void testUnknownPackagingType() throws Exception {
Expand Down
@@ -1,9 +1,11 @@

package org.eclipse.m2e.tests.lifecycle;

import java.util.List;
import java.util.Map;

import org.eclipse.core.resources.IProject;

import org.eclipse.m2e.core.core.IMavenConstants;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.project.configurator.AbstractBuildParticipant;
Expand Down Expand Up @@ -32,8 +34,8 @@ public void testMojoExecutionIgnore() throws Exception {
List<AbstractProjectConfigurator> configurators = lifecycleMapping.getProjectConfigurators(facade, monitor);
assertEquals(configurators.toString(), 0, configurators.size());

Map<MojoExecutionKey, List<AbstractBuildParticipant>> buildParticipants = lifecycleMapping
.getBuildParticipants(facade, monitor);
Map<MojoExecutionKey, List<AbstractBuildParticipant>> buildParticipants = lifecycleMapping.getBuildParticipants(
facade, monitor);
assertEquals(buildParticipants.keySet().toString(), 1, buildParticipants.size()); // only one mojo execution
assertEquals(0, buildParticipants.values().iterator().next().size()); // no build participants
}
Expand All @@ -52,13 +54,13 @@ public void testMojoExecutionIgnoreWithMessage() throws Exception {
List<AbstractProjectConfigurator> configurators = lifecycleMapping.getProjectConfigurators(facade, monitor);
assertEquals(configurators.toString(), 0, configurators.size());

Map<MojoExecutionKey, List<AbstractBuildParticipant>> buildParticipants = lifecycleMapping
.getBuildParticipants(facade, monitor);
Map<MojoExecutionKey, List<AbstractBuildParticipant>> buildParticipants = lifecycleMapping.getBuildParticipants(
facade, monitor);
assertEquals(buildParticipants.keySet().toString(), 1, buildParticipants.size()); // only one mojo execution
assertEquals(0, buildParticipants.values().iterator().next().size()); // no build participants

WorkspaceHelpers.assertWarningMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
"Ignore plugin execution test message", 1 /*lineNumber*/, "pom.xml", project);
"Ignore plugin execution test message", 11 /*lineNumber*/, "pom.xml", project);
}

public void testMojoExecutionExecute() throws Exception {
Expand All @@ -76,8 +78,8 @@ public void testMojoExecutionExecute() throws Exception {
List<AbstractProjectConfigurator> configurators = lifecycleMapping.getProjectConfigurators(facade, monitor);
assertEquals(configurators.toString(), 0, configurators.size());

Map<MojoExecutionKey, List<AbstractBuildParticipant>> buildParticipants = lifecycleMapping
.getBuildParticipants(facade, monitor);
Map<MojoExecutionKey, List<AbstractBuildParticipant>> buildParticipants = lifecycleMapping.getBuildParticipants(
facade, monitor);
assertEquals(buildParticipants.keySet().toString(), 1, buildParticipants.size()); // only one mojo execution
assertEquals(1, buildParticipants.values().iterator().next().size()); // one
assertTrue(buildParticipants.values().iterator().next().get(0) instanceof MojoExecutionBuildParticipant);
Expand All @@ -97,14 +99,14 @@ public void testMojoExecutionExecuteWithMessage() throws Exception {
List<AbstractProjectConfigurator> configurators = lifecycleMapping.getProjectConfigurators(facade, monitor);
assertEquals(configurators.toString(), 0, configurators.size());

Map<MojoExecutionKey, List<AbstractBuildParticipant>> buildParticipants = lifecycleMapping
.getBuildParticipants(facade, monitor);
Map<MojoExecutionKey, List<AbstractBuildParticipant>> buildParticipants = lifecycleMapping.getBuildParticipants(
facade, monitor);
assertEquals(buildParticipants.keySet().toString(), 1, buildParticipants.size()); // only one mojo execution
assertEquals(1, buildParticipants.values().iterator().next().size()); // one
assertTrue(buildParticipants.values().iterator().next().get(0) instanceof MojoExecutionBuildParticipant);

WorkspaceHelpers.assertWarningMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
"Execute plugin execution test message", 1 /*lineNumber*/, "pom.xml", project);
"Execute plugin execution test message", 12 /*lineNumber*/, "pom.xml", project);
}

public void testMojoExecutionConfigurator() throws Exception {
Expand Down Expand Up @@ -138,14 +140,16 @@ public void testMojoExecutionError() throws Exception {
List<AbstractProjectConfigurator> configurators = lifecycleMapping.getProjectConfigurators(facade, monitor);
assertEquals(configurators.toString(), 0, configurators.size());

Map<MojoExecutionKey, List<AbstractBuildParticipant>> buildParticipants = lifecycleMapping
.getBuildParticipants(facade, monitor);
Map<MojoExecutionKey, List<AbstractBuildParticipant>> buildParticipants = lifecycleMapping.getBuildParticipants(
facade, monitor);
assertEquals(buildParticipants.keySet().toString(), 1, buildParticipants.size()); // only one mojo execution
assertEquals(0, buildParticipants.values().iterator().next().size());

WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
WorkspaceHelpers
.assertErrorMarker(
IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
"Plugin execution marked as error in lifecycle configuration: org.eclipse.m2e.test.lifecyclemapping:test-lifecyclemapping-plugin:1.0.0:test-goal-1 (execution: standard, phase: compile)",
1 /*lineNumber*/, "pom.xml", project);
12 /*lineNumber*/, "pom.xml", project);
}

public void testMojoExecutionErrorWithMessage() throws Exception {
Expand All @@ -162,12 +166,12 @@ public void testMojoExecutionErrorWithMessage() throws Exception {
List<AbstractProjectConfigurator> configurators = lifecycleMapping.getProjectConfigurators(facade, monitor);
assertEquals(configurators.toString(), 0, configurators.size());

Map<MojoExecutionKey, List<AbstractBuildParticipant>> buildParticipants = lifecycleMapping
.getBuildParticipants(facade, monitor);
Map<MojoExecutionKey, List<AbstractBuildParticipant>> buildParticipants = lifecycleMapping.getBuildParticipants(
facade, monitor);
assertEquals(buildParticipants.keySet().toString(), 1, buildParticipants.size()); // only one mojo execution
assertEquals(0, buildParticipants.values().iterator().next().size());

WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, "Error plugin execution test message",
1 /*lineNumber*/, "pom.xml", project);
WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
"Error plugin execution test message", 12 /*lineNumber*/, "pom.xml", project);
}
}
Expand Up @@ -5,9 +5,11 @@

import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;

import org.eclipse.m2e.core.core.IMavenConstants;
import org.eclipse.m2e.core.internal.lifecycle.LifecycleMappingFactory;
import org.eclipse.m2e.core.internal.lifecycle.model.LifecycleMappingMetadataSource;
import org.eclipse.m2e.core.internal.markers.MarkerLocation;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.core.project.configurator.ILifecycleMapping;
import org.eclipse.m2e.tests.common.AbstractLifecycleMappingTest;
Expand All @@ -31,11 +33,11 @@ public void testDefaultMetadataSource() throws Exception {

String expectedErrorMessage = "Plugin execution not covered by lifecycle configuration: org.eclipse.m2e.test.lifecyclemapping:test-lifecyclemapping-plugin:1.0.0:test-goal-1 (execution: default-test-goal-1, phase: process-resources)";
WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
13 /*lineNumber of plugin's <artifactId>*/, project);
11 /*lineNumber*/, project);

expectedErrorMessage = "Project configurator \"missing default project configurator id for test-lifecyclemapping-plugin:test-goal-1\" is not available. To enable full functionality, install the project configurator and run Maven->Update Project Configuration.";
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
expectedErrorMessage, 11 /*lineNumber*/, project);
WorkspaceHelpers.assertConfiguratorErrorMarkerAttributes(marker,
"missing default project configurator id for test-lifecyclemapping-plugin:test-goal-1");
}
Expand Down Expand Up @@ -76,11 +78,11 @@ public void testReferencedFromPom() throws Exception {

String expectedErrorMessage = "Plugin execution not covered by lifecycle configuration: org.eclipse.m2e.test.lifecyclemapping:test-lifecyclemapping-plugin:1.0.0:test-goal-for-eclipse-extension2 (execution: default-test-goal-for-eclipse-extension2, phase: compile)";
WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
13 /*lineNumber of plugin's <artifactId>*/, project);
11 /*lineNumber*/, project);

expectedErrorMessage = "Project configurator \"no such project configurator id for test-lifecyclemapping-plugin:test-goal-for-eclipse-extension2 - referenced from pom\" is not available. To enable full functionality, install the project configurator and run Maven->Update Project Configuration.";
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
expectedErrorMessage, 11 /*lineNumber*/, project);
WorkspaceHelpers
.assertConfiguratorErrorMarkerAttributes(
marker,
Expand All @@ -103,25 +105,25 @@ public void testEmbeddedInPom() throws Exception {

String expectedErrorMessage = "Plugin execution not covered by lifecycle configuration: org.eclipse.m2e.test.lifecyclemapping:test-lifecyclemapping-plugin:1.0.0:test-goal-for-eclipse-extension2 (execution: default-test-goal-for-eclipse-extension2, phase: compile)";
WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
13 /*lineNumber of plugin's <artifactId>*/, project);
11 /*lineNumber*/, project);

expectedErrorMessage = "Project configurator \"no such project configurator id for test-lifecyclemapping-plugin:test-goal-for-eclipse-extension2 - embedded from pom\" is not available. To enable full functionality, install the project configurator and run Maven->Update Project Configuration.";
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
expectedErrorMessage, 11 /*lineNumber*/, project);
WorkspaceHelpers
.assertConfiguratorErrorMarkerAttributes(marker,
"no such project configurator id for test-lifecyclemapping-plugin:test-goal-for-eclipse-extension2 - embedded from pom");
}

public void testParent() throws Exception {
IMavenProjectFacade facade = importMavenProject(
IMavenProjectFacade parentFacade = importMavenProject(
"projects/lifecyclemapping/lifecycleMappingMetadata/PluginExecutionMetadataPrioritiesTest",
"testParent/pom.xml");
assertNotNull("Expected not null MavenProjectFacade", facade);
IProject project = facade.getProject();
assertNotNull("Expected not null MavenProjectFacade", parentFacade);
IProject project = parentFacade.getProject();
WorkspaceHelpers.assertNoErrors(project);

facade = importMavenProject(
IMavenProjectFacade facade = importMavenProject(
"projects/lifecyclemapping/lifecycleMappingMetadata/PluginExecutionMetadataPrioritiesTest",
"testParent/useParent/pom.xml");
assertNotNull("Expected not null MavenProjectFacade", facade);
Expand All @@ -130,11 +132,15 @@ public void testParent() throws Exception {
assertNotNull(errorMarkers);
assertEquals(WorkspaceHelpers.toString(errorMarkers), 2, errorMarkers.size());
String expectedErrorMessage = "Plugin execution not covered by lifecycle configuration: org.eclipse.m2e.test.lifecyclemapping:test-lifecyclemapping-plugin:1.0.0:test-goal-1 (execution: default-test-goal-1, phase: process-resources)";
WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
2 /*lineNumber of <project> element, definition is in parent*/, project);
IMarker marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID,
expectedErrorMessage, null /*lineNumber*/, project);
MarkerLocation causeLocation = new MarkerLocation(parentFacade.getMavenProject().getFile().getAbsolutePath(), 12,
9, 17);
WorkspaceHelpers.assertMarkerLocation(new MarkerLocation(5, 2, 10, causeLocation), marker);
expectedErrorMessage = "Project configurator \"no such project configurator id for test-lifecyclemapping-plugin:test-goal-1 - parent\" is not available. To enable full functionality, install the project configurator and run Maven->Update Project Configuration.";
WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
marker = WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
null /*lineNumber*/, project);
WorkspaceHelpers.assertMarkerLocation(new MarkerLocation(5, 2, 10, causeLocation), marker);

facade = importMavenProject(
"projects/lifecyclemapping/lifecycleMappingMetadata/PluginExecutionMetadataPrioritiesTest",
Expand All @@ -146,10 +152,10 @@ public void testParent() throws Exception {
assertEquals(WorkspaceHelpers.toString(errorMarkers), 2, errorMarkers.size());
expectedErrorMessage = "Plugin execution not covered by lifecycle configuration: org.eclipse.m2e.test.lifecyclemapping:test-lifecyclemapping-plugin:1.0.0:test-goal-1 (execution: default-test-goal-1, phase: process-resources)";
WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
14 /*lineNumber of <build> element, definition is in parent, build element exists though.. better match than <project>*/,
project);
null /*lineNumber*/, project);
WorkspaceHelpers.assertMarkerLocation(new MarkerLocation(5, 2, 10), marker);
expectedErrorMessage = "Project configurator \"no such project configurator id for test-lifecyclemapping-plugin:test-goal-1 - override\" is not available. To enable full functionality, install the project configurator and run Maven->Update Project Configuration.";
WorkspaceHelpers.assertErrorMarker(IMavenConstants.MARKER_LIFECYCLEMAPPING_ID, expectedErrorMessage,
1 /*lineNumber*/, project);
null /*lineNumber*/, project);
}
}