fix: include classifiers in error messages
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
index 7eee9ae..d74336d 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDeps.java
@@ -157,23 +157,16 @@
{
log = helper.getLog();
}
- try
+ DependencyNode node = getNode( helper );
+ RequireUpperBoundDepsVisitor visitor = new RequireUpperBoundDepsVisitor();
+ visitor.setUniqueVersions( uniqueVersions );
+ visitor.setIncludes( includes );
+ node.accept( visitor );
+ List<String> errorMessages = buildErrorMessages( visitor.getConflicts() );
+ if ( errorMessages.size() > 0 )
{
- DependencyNode node = getNode( helper );
- RequireUpperBoundDepsVisitor visitor = new RequireUpperBoundDepsVisitor();
- visitor.setUniqueVersions( uniqueVersions );
- visitor.setIncludes( includes );
- node.accept( visitor );
- List<String> errorMessages = buildErrorMessages( visitor.getConflicts() );
- if ( errorMessages.size() > 0 )
- {
- throw new EnforcerRuleException( "Failed while enforcing RequireUpperBoundDeps. The error(s) are "
- + errorMessages );
- }
- }
- catch ( Exception e )
- {
- throw new EnforcerRuleException( e.getLocalizedMessage(), e );
+ throw new EnforcerRuleException( "Failed while enforcing RequireUpperBoundDeps. The error(s) are "
+ + errorMessages );
}
}
@@ -256,15 +249,22 @@
}
String result = artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + version;
- if ( "compile".equals( artifact.getScope() ) )
+ String classifier = artifact.getClassifier();
+ if ( classifier != null && !classifier.isEmpty() )
{
- return MessageUtils.buffer().strong( result ).toString();
+ result += ":" + classifier;
}
- if ( artifact.getScope() != null )
+
+ String scope = artifact.getScope();
+ if ( "compile".equals( scope ) )
{
- return result + " [" + artifact.getScope() + ']';
+ result = MessageUtils.buffer().strong( result ).toString();
}
-
+ else if ( scope != null )
+ {
+ result += " [" + scope + ']';
+ }
+
return result;
}
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
index 763a2a5..5a4f086 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
@@ -24,6 +24,14 @@
import java.util.Properties;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactCollector;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionResult;
@@ -34,8 +42,16 @@
import org.apache.maven.plugin.logging.SystemStreamLog;
import org.apache.maven.plugins.enforcer.utils.MockEnforcerExpressionEvaluator;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.dependency.tree.DefaultDependencyTreeBuilder;
+import org.apache.maven.shared.dependency.tree.DependencyNode;
+import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
+import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.mockito.ArgumentMatchers;
+import org.mockito.Matchers;
+import org.mockito.Mockito;
/**
* The Class EnforcerTestUtils.
@@ -117,7 +133,37 @@
session.setCurrentProject( project );
eval = new PluginParameterExpressionEvaluator( session, mockExecution );
}
- return new DefaultEnforcementRuleHelper( session, eval, new SystemStreamLog(), null );
+ PlexusContainer container = Mockito.mock( PlexusContainer.class );
+
+ Artifact artifact = new DefaultArtifact( "groupId", "artifactId", "version", "compile", "jar",
+ "classifier", null );
+ Artifact v1 = new DefaultArtifact( "groupId", "artifact", "1.0.0", "compile", "jar", "", null );
+ Artifact v2 = new DefaultArtifact( "groupId", "artifact", "2.0.0", "compile", "jar", "", null );
+ final DependencyNode node = new DependencyNode( artifact );
+ DependencyNode child1 = new DependencyNode( v1 );
+ DependencyNode child2 = new DependencyNode( v2 );
+ node.addChild( child1 );
+ node.addChild( child2 );
+
+ DependencyTreeBuilder dependencyTreeBuilder = new DefaultDependencyTreeBuilder() {
+ @Override
+ public DependencyNode buildDependencyTree( MavenProject project, ArtifactRepository repository,
+ ArtifactFactory factory, ArtifactMetadataSource metadataSource,
+ ArtifactFilter filter, ArtifactCollector collector )
+ throws DependencyTreeBuilderException {
+ return node;
+ }
+ };
+
+ try
+ {
+ Mockito.when( container.lookup( DependencyTreeBuilder.class ) ).thenReturn( dependencyTreeBuilder );
+ }
+ catch ( ComponentLookupException e )
+ {
+ // test will fail
+ }
+ return new DefaultEnforcementRuleHelper( session, eval, new SystemStreamLog(), container );
}
/**
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDepsTest.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDepsTest.java
new file mode 100644
index 0000000..621373f
--- /dev/null
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/RequireUpperBoundDepsTest.java
@@ -0,0 +1,54 @@
+package org.apache.maven.plugins.enforcer;
+
+import org.junit.Assert;
+
+/*
+ * 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.junit.Test;
+
+import java.io.IOException;
+
+import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
+import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.apache.maven.plugin.testing.ArtifactStubFactory;
+
+public class RequireUpperBoundDepsTest
+{
+
+ @Test
+ public void testRule() throws IOException
+ {
+ ArtifactStubFactory factory = new ArtifactStubFactory();
+ MockProject project = new MockProject();
+ EnforcerRuleHelper helper = EnforcerTestUtils.getHelper( project );
+ project.setArtifacts( factory.getMixedArtifacts() );
+ project.setDependencyArtifacts( factory.getScopedArtifacts() );
+ RequireUpperBoundDeps rule = new RequireUpperBoundDeps();
+
+ try {
+ rule.execute( helper );
+ Assert.fail("Did not detect upper bounds error");
+ }
+ catch ( EnforcerRuleException ex ) {
+ Assert.assertTrue( ex.getMessage(), ex.getMessage().contains( "groupId:artifactId:version:classifier" ) );
+ }
+ }
+
+}
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtilsHelper.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtilsHelper.java
index 37d98bc..1600b9b 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtilsHelper.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtilsHelper.java
@@ -54,7 +54,7 @@
{
if ( !shouldFail )
{
- fail( "No Exception expected:" + e.getLocalizedMessage() );
+ fail( "No Exception expected:" + e.getMessage() );
}
helper.getLog().debug( e.getMessage() );
}