IDEA-133078 Gradle: build script classpath resolve sometimes require toplevel(for...
authorVladislav.Soroka <Vladislav.Soroka@jetbrains.com>
Thu, 27 Nov 2014 09:05:13 +0000 (12:05 +0300)
committerVladislav.Soroka <Vladislav.Soroka@jetbrains.com>
Mon, 8 Dec 2014 09:00:06 +0000 (12:00 +0300)
plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ModelBuildScriptClasspathBuilderImpl.java
plugins/gradle/tooling-extension-impl/testData/testModelBuildScriptClasspathBuilder/build.gradle
plugins/gradle/tooling-extension-impl/testSources/org/jetbrains/plugins/gradle/tooling/builder/ModelBuildScriptClasspathBuilderImplTest.java

index 64a3805223d7d8914899ed3d4c9fc6a031784b42..0be119a763da4209792fd7250f22a1688e5466fc 100644 (file)
@@ -88,9 +88,15 @@ public class ModelBuildScriptClasspathBuilderImpl implements ModelBuilderService
         configurations.add(configuration);
       }
       else {
-        configuration = configurations.maybeCreate(UUID.randomUUID().toString());
+        String confName = project.getPath() + ":" + classpathConfiguration.getName();
+        if(configurations.findByName(confName) != null) {
+          confName += (":" + UUID.randomUUID().toString());
+        }
+
+        configuration = configurations.maybeCreate(confName);
         configuration.getDependencies().addAll(classpathConfiguration.getAllDependencies());
         configuration.getArtifacts().addAll(classpathConfiguration.getAllArtifacts());
+        project.getRepositories().addAll(project.getBuildscript().getRepositories());
       }
 
       Collection<Configuration> plusConfigurations = Collections.singletonList(configuration);
index c7e94c25cf71a1b5b93fb7da5d502bdd9d3aed96..ba88ac7080c81642a651a16bf51c2bbb59e3dcb3 100644 (file)
@@ -1,4 +1,12 @@
 //noinspection GrPackage
+buildscript {
+  dependencies {
+    classpath 'junit:junit:4.11'
+  }
+  repositories {
+    mavenCentral()
+  }
+}
 
 project("moduleWithAdditionalClasspath") {
   buildscript {
index 6fc4c5a6cb597cfae0089d851191cce45210cbf9..4bb2508c9db5bad280f2b45ff65cde65f41744f1 100644 (file)
@@ -53,24 +53,28 @@ public class ModelBuildScriptClasspathBuilderImplTest extends AbstractModelBuild
 
           if (module.getName().equals("moduleWithAdditionalClasspath")) {
             assertNotNull(classpathModel);
-            assertEquals(1, classpathModel.getClasspath().size());
+            assertEquals(3, classpathModel.getClasspath().size());
 
-            ClasspathEntryModel classpathEntry = classpathModel.getClasspath().getAt(0);
-            assertEquals("someDep.jar", new File(classpathEntry.getClasses().iterator().next()).getName());
+            assertEquals("junit-4.11.jar", new File(classpathModel.getClasspath().getAt(0).getClasses().iterator().next()).getName());
+            assertEquals("hamcrest-core-1.3.jar", new File(classpathModel.getClasspath().getAt(1).getClasses().iterator().next()).getName());
+            assertEquals("someDep.jar", new File(classpathModel.getClasspath().getAt(2).getClasses().iterator().next()).getName());
           }
           else if (module.getName().equals("baseModule") ||
                    module.getName().equals("moduleWithInheritedClasspath")) {
             assertNotNull("Null build classpath for module: " + module.getName(), classpathModel);
-            assertEquals("Wrong build classpath for module: " + module.getName(), 1, classpathModel.getClasspath().size());
+            assertEquals("Wrong build classpath for module: " + module.getName(), 3, classpathModel.getClasspath().size());
 
-            ClasspathEntryModel classpathEntry = classpathModel.getClasspath().getAt(0);
+            assertEquals("Wrong build classpath for module: " + module.getName(), "junit-4.11.jar",
+                         new File(classpathModel.getClasspath().getAt(0).getClasses().iterator().next()).getName());
+            assertEquals("Wrong build classpath for module: " + module.getName(), "hamcrest-core-1.3.jar",
+                         new File(classpathModel.getClasspath().getAt(1).getClasses().iterator().next()).getName());
             assertEquals("Wrong build classpath for module: " + module.getName(), "inheritedDep.jar",
-                         new File(classpathEntry.getClasses().iterator().next()).getName());
+                         new File(classpathModel.getClasspath().getAt(2).getClasses().iterator().next()).getName());
           }
           else if (module.getName().equals("moduleWithoutAdditionalClasspath") ||
                    module.getName().equals("testModelBuildScriptClasspathBuilder")) {
             assertNotNull("Wrong build classpath for module: " + module.getName(), classpathModel);
-            assertTrue("Wrong build classpath for module: " + module.getName(), classpathModel.getClasspath().isEmpty());
+            assertEquals("Wrong build classpath for module: " + module.getName(), 2, classpathModel.getClasspath().size());
           }
           else {
             fail("Unexpected module found: " + module.getName());