IDEA-133078 Gradle: build script classpath resolve sometimes require toplevel(for...
[idea/community.git] / plugins / gradle / tooling-extension-impl / testSources / org / jetbrains / plugins / gradle / tooling / builder / ModelBuildScriptClasspathBuilderImplTest.java
1 /*
2  * Copyright 2000-2014 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.jetbrains.plugins.gradle.tooling.builder;
17
18 import com.intellij.util.Function;
19 import com.intellij.util.containers.ContainerUtil;
20 import org.gradle.tooling.model.DomainObjectSet;
21 import org.gradle.tooling.model.idea.IdeaModule;
22 import org.jetbrains.annotations.NotNull;
23 import org.jetbrains.plugins.gradle.model.BuildScriptClasspathModel;
24 import org.jetbrains.plugins.gradle.model.ClasspathEntryModel;
25 import org.junit.Test;
26
27 import java.io.File;
28 import java.util.List;
29 import java.util.Set;
30
31 import static org.junit.Assert.*;
32
33 /**
34  * @author Vladislav.Soroka
35  * @since 1/16/14
36  */
37 public class ModelBuildScriptClasspathBuilderImplTest extends AbstractModelBuilderTest {
38
39   public ModelBuildScriptClasspathBuilderImplTest(@NotNull String gradleVersion) {
40     super(gradleVersion);
41   }
42
43   @Test
44   public void testModelBuildScriptClasspathBuilder() throws Exception {
45
46     DomainObjectSet<? extends IdeaModule> ideaModules = allModels.getIdeaProject().getModules();
47
48     List<BuildScriptClasspathModel> ideaModule =
49       ContainerUtil.mapNotNull(ideaModules, new Function<IdeaModule, BuildScriptClasspathModel>() {
50         @Override
51         public BuildScriptClasspathModel fun(IdeaModule module) {
52           BuildScriptClasspathModel classpathModel = allModels.getExtraProject(module, BuildScriptClasspathModel.class);
53
54           if (module.getName().equals("moduleWithAdditionalClasspath")) {
55             assertNotNull(classpathModel);
56             assertEquals(3, classpathModel.getClasspath().size());
57
58             assertEquals("junit-4.11.jar", new File(classpathModel.getClasspath().getAt(0).getClasses().iterator().next()).getName());
59             assertEquals("hamcrest-core-1.3.jar", new File(classpathModel.getClasspath().getAt(1).getClasses().iterator().next()).getName());
60             assertEquals("someDep.jar", new File(classpathModel.getClasspath().getAt(2).getClasses().iterator().next()).getName());
61           }
62           else if (module.getName().equals("baseModule") ||
63                    module.getName().equals("moduleWithInheritedClasspath")) {
64             assertNotNull("Null build classpath for module: " + module.getName(), classpathModel);
65             assertEquals("Wrong build classpath for module: " + module.getName(), 3, classpathModel.getClasspath().size());
66
67             assertEquals("Wrong build classpath for module: " + module.getName(), "junit-4.11.jar",
68                          new File(classpathModel.getClasspath().getAt(0).getClasses().iterator().next()).getName());
69             assertEquals("Wrong build classpath for module: " + module.getName(), "hamcrest-core-1.3.jar",
70                          new File(classpathModel.getClasspath().getAt(1).getClasses().iterator().next()).getName());
71             assertEquals("Wrong build classpath for module: " + module.getName(), "inheritedDep.jar",
72                          new File(classpathModel.getClasspath().getAt(2).getClasses().iterator().next()).getName());
73           }
74           else if (module.getName().equals("moduleWithoutAdditionalClasspath") ||
75                    module.getName().equals("testModelBuildScriptClasspathBuilder")) {
76             assertNotNull("Wrong build classpath for module: " + module.getName(), classpathModel);
77             assertEquals("Wrong build classpath for module: " + module.getName(), 2, classpathModel.getClasspath().size());
78           }
79           else {
80             fail("Unexpected module found: " + module.getName());
81           }
82
83           return classpathModel;
84         }
85       });
86
87     assertEquals(5, ideaModule.size());
88   }
89
90   @Override
91   protected Set<Class> getModels() {
92     return ContainerUtil.<Class>set(BuildScriptClasspathModel.class);
93   }
94 }