[MDEP-708] dependency:analyze should recommend narrower scope where possible (#18)

* change non-test scoped to compile scope for detecting a narrower possible scope for test dependencies
diff --git a/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java b/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
index a59cba8..7b05372 100644
--- a/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
+++ b/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
@@ -141,7 +141,7 @@
 
         for ( Artifact artifact : testOnlyArtifacts )
         {
-            if ( !artifact.getScope().equals( "test" ) )
+            if ( artifact.getScope().equals( "compile" ) )
             {
                 nonTestScopeArtifacts.add( artifact );
             }
diff --git a/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java b/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java
index df528f9..807be0f 100644
--- a/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java
@@ -278,18 +278,18 @@
         // assertEquals( expectedAnalysis, actualAnalysis );
     }
 
-    public void testJarWithNonTestScopedTestDependency()
+    public void testJarWithCompileScopedTestDependency()
             throws TestToolsException, ProjectDependencyAnalyzerException
     {
-        compileProject( "jarWithNonTestScopedTestDependency/pom.xml" );
+        compileProject( "jarWithCompileScopedTestDependency/pom.xml" );
 
-        MavenProject project2 = getProject( "jarWithNonTestScopedTestDependency/project2/pom.xml" );
+        MavenProject project2 = getProject( "jarWithCompileScopedTestDependency/project2/pom.xml" );
 
         ProjectDependencyAnalysis actualAnalysis = analyzer.analyze( project2 );
 
         Artifact artifact1 = createArtifact( "org.apache.maven.shared.dependency-analyzer.tests",
-                "jarWithNonTestScopedTestDependency1", "jar", "1.0", "test" );
-        Artifact junit = createArtifact( "junit", "junit", "jar", "3.8.1", "test" );
+                "jarWithCompileScopedTestDependency1", "jar", "1.0", "test" );
+        Artifact junit = createArtifact( "junit", "junit", "jar", "3.8.1", "compile" );
 
         ProjectDependencyAnalysis expectedAnalysis;
         if ( SystemUtils.isJavaVersionAtLeast( JavaVersion.JAVA_1_8 ) )
@@ -311,6 +311,38 @@
         assertEquals( expectedAnalysis, actualAnalysis );
     }
 
+    public void testJarWithRuntimeScopedTestDependency() throws TestToolsException, ProjectDependencyAnalyzerException
+    {
+        // We can't effectively analyze runtime dependencies at this time
+        compileProject( "jarWithRuntimeScopedTestDependency/pom.xml" );
+
+        MavenProject project2 = getProject( "jarWithRuntimeScopedTestDependency/project2/pom.xml" );
+
+        ProjectDependencyAnalysis actualAnalysis = analyzer.analyze( project2 );
+
+        Artifact artifact1 = createArtifact( "org.apache.maven.shared.dependency-analyzer.tests",
+                "jarWithRuntimeScopedTestDependency1", "jar", "1.0", "test" );
+        Artifact junit = createArtifact( "junit", "junit", "jar", "3.8.1", "runtime" );
+
+        ProjectDependencyAnalysis expectedAnalysis;
+        if ( SystemUtils.isJavaVersionAtLeast( JavaVersion.JAVA_1_8 ) )
+        {
+            Set<Artifact> usedDeclaredArtifacts = new HashSet<>( Arrays.asList( artifact1, junit ) );
+            expectedAnalysis = new ProjectDependencyAnalysis( usedDeclaredArtifacts, null, null,
+                    null );
+        }
+        else
+        {
+            // With JDK 7 and earlier, not all deps are identified correctly
+            Set<Artifact> usedDeclaredArtifacts = Collections.singleton( artifact1 );
+            Set<Artifact> unUsedDeclaredArtifacts = Collections.singleton( junit );
+            expectedAnalysis = new ProjectDependencyAnalysis( usedDeclaredArtifacts, null, unUsedDeclaredArtifacts,
+                    null );
+        }
+
+        assertEquals( expectedAnalysis, actualAnalysis );
+    }
+
     public void testMultimoduleProject()
         throws TestToolsException, ProjectDependencyAnalyzerException
     {
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/pom.xml b/src/test/resources/jarWithCompileScopedTestDependency/pom.xml
similarity index 95%
rename from src/test/resources/jarWithNonTestScopedTestDependency/pom.xml
rename to src/test/resources/jarWithCompileScopedTestDependency/pom.xml
index cbb658f..410249b 100644
--- a/src/test/resources/jarWithNonTestScopedTestDependency/pom.xml
+++ b/src/test/resources/jarWithCompileScopedTestDependency/pom.xml
@@ -26,7 +26,7 @@
 >
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
-  <artifactId>jarWithNonTestScopedTestDependency</artifactId>
+  <artifactId>jarWithCompileScopedTestDependency</artifactId>
   <packaging>pom</packaging>
   <version>1.0</version>
 
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project1/pom.xml b/src/test/resources/jarWithCompileScopedTestDependency/project1/pom.xml
similarity index 95%
copy from src/test/resources/jarWithNonTestScopedTestDependency/project1/pom.xml
copy to src/test/resources/jarWithCompileScopedTestDependency/project1/pom.xml
index 8959315..8528b65 100644
--- a/src/test/resources/jarWithNonTestScopedTestDependency/project1/pom.xml
+++ b/src/test/resources/jarWithCompileScopedTestDependency/project1/pom.xml
@@ -26,7 +26,7 @@
 >
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
-  <artifactId>jarWithNonTestScopedTestDependency1</artifactId>
+  <artifactId>jarWithCompileScopedTestDependency1</artifactId>
   <packaging>jar</packaging>
   <version>1.0</version>
 
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java b/src/test/resources/jarWithCompileScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java
similarity index 100%
rename from src/test/resources/jarWithNonTestScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java
rename to src/test/resources/jarWithCompileScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project2/pom.xml b/src/test/resources/jarWithCompileScopedTestDependency/project2/pom.xml
similarity index 93%
rename from src/test/resources/jarWithNonTestScopedTestDependency/project2/pom.xml
rename to src/test/resources/jarWithCompileScopedTestDependency/project2/pom.xml
index 5a7a1b0..d2dd865 100644
--- a/src/test/resources/jarWithNonTestScopedTestDependency/project2/pom.xml
+++ b/src/test/resources/jarWithCompileScopedTestDependency/project2/pom.xml
@@ -26,7 +26,7 @@
 >
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
-  <artifactId>jarWithNonTestScopedTestDependency2</artifactId>
+  <artifactId>jarWithCompileScopedTestDependency2</artifactId>
   <packaging>jar</packaging>
   <version>1.0</version>
 
@@ -45,7 +45,7 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
-      <artifactId>jarWithNonTestScopedTestDependency1</artifactId>
+      <artifactId>jarWithCompileScopedTestDependency1</artifactId>
       <version>1.0</version>
       <scope>test</scope>
     </dependency>
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java b/src/test/resources/jarWithCompileScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
similarity index 100%
rename from src/test/resources/jarWithNonTestScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
rename to src/test/resources/jarWithCompileScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/pom.xml b/src/test/resources/jarWithRuntimeScopedTestDependency/pom.xml
similarity index 95%
copy from src/test/resources/jarWithNonTestScopedTestDependency/pom.xml
copy to src/test/resources/jarWithRuntimeScopedTestDependency/pom.xml
index cbb658f..bfa6ed3 100644
--- a/src/test/resources/jarWithNonTestScopedTestDependency/pom.xml
+++ b/src/test/resources/jarWithRuntimeScopedTestDependency/pom.xml
@@ -26,7 +26,7 @@
 >
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
-  <artifactId>jarWithNonTestScopedTestDependency</artifactId>
+  <artifactId>jarWithRuntimeScopedTestDependency</artifactId>
   <packaging>pom</packaging>
   <version>1.0</version>
 
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project1/pom.xml b/src/test/resources/jarWithRuntimeScopedTestDependency/project1/pom.xml
similarity index 95%
rename from src/test/resources/jarWithNonTestScopedTestDependency/project1/pom.xml
rename to src/test/resources/jarWithRuntimeScopedTestDependency/project1/pom.xml
index 8959315..2a0cd3e 100644
--- a/src/test/resources/jarWithNonTestScopedTestDependency/project1/pom.xml
+++ b/src/test/resources/jarWithRuntimeScopedTestDependency/project1/pom.xml
@@ -26,7 +26,7 @@
 >
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
-  <artifactId>jarWithNonTestScopedTestDependency1</artifactId>
+  <artifactId>jarWithRuntimeScopedTestDependency1</artifactId>
   <packaging>jar</packaging>
   <version>1.0</version>
 
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java b/src/test/resources/jarWithRuntimeScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java
similarity index 100%
copy from src/test/resources/jarWithNonTestScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java
copy to src/test/resources/jarWithRuntimeScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project2/pom.xml b/src/test/resources/jarWithRuntimeScopedTestDependency/project2/pom.xml
similarity index 92%
copy from src/test/resources/jarWithNonTestScopedTestDependency/project2/pom.xml
copy to src/test/resources/jarWithRuntimeScopedTestDependency/project2/pom.xml
index 5a7a1b0..bfe9fc2 100644
--- a/src/test/resources/jarWithNonTestScopedTestDependency/project2/pom.xml
+++ b/src/test/resources/jarWithRuntimeScopedTestDependency/project2/pom.xml
@@ -26,7 +26,7 @@
 >
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
-  <artifactId>jarWithNonTestScopedTestDependency2</artifactId>
+  <artifactId>jarWithRuntimeScopedTestDependency2</artifactId>
   <packaging>jar</packaging>
   <version>1.0</version>
 
@@ -45,7 +45,7 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
-      <artifactId>jarWithNonTestScopedTestDependency1</artifactId>
+      <artifactId>jarWithRuntimeScopedTestDependency1</artifactId>
       <version>1.0</version>
       <scope>test</scope>
     </dependency>
@@ -54,6 +54,7 @@
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>3.8.1</version>
+      <scope>runtime</scope>
     </dependency>
 
   </dependencies>
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java b/src/test/resources/jarWithRuntimeScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
similarity index 100%
copy from src/test/resources/jarWithNonTestScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
copy to src/test/resources/jarWithRuntimeScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java