This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch MNG-6213
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 859e344f4d5f7bfa00caf7343ea6554138e9dcf7
Author: Michael Warnecke <13...@nordakademie.de>
AuthorDate: Sat Sep 23 18:37:09 2017 +0200

    [MNG-6213] Validate scope in dependencyManagement
    
    This closes #131
---
 .../model/validation/DefaultModelValidator.java    | 10 ++-
 .../validation/DefaultModelValidatorTest.java      | 10 +++
 .../validation/bad-dependency-management-scope.xml | 72 ++++++++++++++++++++++
 3 files changed, 90 insertions(+), 2 deletions(-)

diff --git 
a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
 
b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
index 1c84776..f58d03a 100644
--- 
a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
+++ 
b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
@@ -105,13 +105,13 @@ public class DefaultModelValidator
                                   + ", the parent element cannot have the same 
groupId:artifactId as the project.",
                               parent );
             }
-            
+
             if ( equals( "LATEST", parent.getVersion() ) || equals( "RELEASE", 
parent.getVersion() ) )
             {
                 addViolation( problems, Severity.WARNING, Version.BASE, 
"parent.version", null,
                               "is either LATEST or RELEASE (both of them are 
being deprecated)", parent );
             }
-            
+
         }
 
         if ( request.getValidationLevel() >= 
ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0 )
@@ -598,6 +598,12 @@ public class DefaultModelValidator
 
                     validateEffectiveModelAgainstDependency( prefix, problems, 
m, d, request );
                 }
+                else
+                {
+                    validateEnum( prefix + "scope", problems, 
Severity.WARNING, Version.V20, d.getScope(),
+                                  d.getManagementKey(), d, "provided", 
"compile", "runtime", "test", "system",
+                                  "import" );
+                }
             }
         }
     }
diff --git 
a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
 
b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
index 3f31526..a9d4c00 100644
--- 
a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
+++ 
b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
@@ -339,6 +339,16 @@ public class DefaultModelValidatorTest
         assertTrue( result.getWarnings().get( 1 ).contains( "test:g" ) );
     }
 
+    public void testBadDependencyManagementScope()
+        throws Exception
+    {
+        SimpleProblemCollector result = validate( 
"bad-dependency-management-scope.xml" );
+
+        assertViolations( result, 0, 0, 1 );
+
+        assertContains( result.getWarnings().get( 0 ), "test:g" );
+    }
+
     public void testBadDependencyVersion()
         throws Exception
     {
diff --git 
a/maven-model-builder/src/test/resources/poms/validation/bad-dependency-management-scope.xml
 
b/maven-model-builder/src/test/resources/poms/validation/bad-dependency-management-scope.xml
new file mode 100644
index 0000000..6b37a85
--- /dev/null
+++ 
b/maven-model-builder/src/test/resources/poms/validation/bad-dependency-management-scope.xml
@@ -0,0 +1,72 @@
+<!--
+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.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>aid</artifactId>
+  <groupId>gid</groupId>
+  <version>0.1</version>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>a</artifactId>
+        <version>0.2</version>
+      </dependency>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>b</artifactId>
+        <version>0.2</version>
+        <scope>compile</scope>
+      </dependency>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>c</artifactId>
+        <version>0.2</version>
+        <scope>runtime</scope>
+      </dependency>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>d</artifactId>
+        <version>0.2</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>e</artifactId>
+        <version>0.2</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>f</artifactId>
+        <version>0.2</version>
+        <scope>import</scope>
+      </dependency>
+      <dependency>
+        <groupId>test</groupId>
+        <artifactId>g</artifactId>
+        <version>1</version>
+        <type>pom</type>
+        <scope>include</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+</project>

Reply via email to