blob: b91b7f66f3e1b28572667e14d3b547fb2fe02805 [file] [log] [blame]
/*
* Copyright (c) 2000-2007 JetBrains s.r.o. All Rights Reserved.
*/
package org.jetbrains.idea.maven.importing;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.libraries.Library;
import org.jetbrains.idea.maven.MavenImportingTestCase;
import org.jetbrains.plugins.groovy.config.GroovyConfigUtils;
import java.io.File;
import java.util.Arrays;
public class GroovyImporterTest extends MavenImportingTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
setRepositoryPath(new File(myDir, "repo").getPath());
}
public void testConfiguringFacetWithoutLibrary() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.codehaus.groovy.maven</groupId>" +
" <artifactId>gmaven-plugin</artifactId>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertUnorderedElementsAreEqual(GroovyConfigUtils.getInstance().getSDKLibrariesByModule(getModule("project")));
}
public void testConfiguringFacetWithLibrary() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<dependencies>" +
" <dependency>" +
" <groupId>org.codehaus.groovy.maven.runtime</groupId>" +
" <artifactId>gmaven-runtime-default</artifactId>" +
" <version>1.0-rc-1</version>" +
" </dependency>" +
"</dependencies>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.codehaus.groovy.maven</groupId>" +
" <artifactId>gmaven-plugin</artifactId>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
Library[] libraries = GroovyConfigUtils.getInstance().getSDKLibrariesByModule(getModule("project"));
assertTrue("unexpected groovy libs configuration: " + libraries.length, libraries.length > 0);
Library library = libraries[0];
assertUnorderedPathsAreEqual(
Arrays.asList(library.getUrls(OrderRootType.CLASSES)),
Arrays.asList("jar://" + getRepositoryPath() + "/org/codehaus/groovy/groovy-all-minimal/1.5.6/groovy-all-minimal-1.5.6.jar!/"));
}
public void testAddingGroovySpecificSources() throws Exception {
createStdProjectFolders();
createProjectSubDirs("src/main/groovy",
"src/test/groovy");
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.codehaus.groovy.maven</groupId>" +
" <artifactId>gmaven-plugin</artifactId>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertSources("project",
"src/main/groovy",
"src/main/java");
assertResources("project", "src/main/resources");
assertTestSources("project",
"src/test/groovy",
"src/test/java");
assertTestResources("project", "src/test/resources");
}
public void testAddingGroovySpecificSources2() throws Exception {
createStdProjectFolders();
createProjectSubDirs("src/main/groovy",
"src/test/groovy");
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.codehaus.gmaven</groupId>" +
" <artifactId>groovy-maven-plugin</artifactId>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertSources("project",
"src/main/groovy",
"src/main/java");
assertResources("project", "src/main/resources");
assertTestSources("project",
"src/test/groovy",
"src/test/java");
assertTestResources("project", "src/test/resources");
}
public void testGroovyEclipsePlugin() throws Exception {
createStdProjectFolders();
createProjectSubDirs("src/main/groovy",
"src/test/groovy");
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"" +
"<dependencies>\n" +
" <dependency>\n" +
" <groupId>org.codehaus.groovy</groupId>\n" +
" <artifactId>groovy-all</artifactId>\n" +
" <version>2.1.0</version>\n" +
" </dependency>\n" +
"</dependencies>" +
"" +
"<build>\n" +
" <pluginManagement>\n" +
" <plugins>\n" +
" <plugin>\n" +
" <artifactId>maven-compiler-plugin</artifactId>\n" +
" <configuration>\n" +
" <compilerId>groovy-eclipse-compiler</compilerId>\n" +
" <source>1.7</source>\n" +
" <target>1.7</target>\n" +
" <showWarnings>false</showWarnings>\n" +
" </configuration>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <groupId>org.codehaus.groovy</groupId>\n" +
" <artifactId>groovy-eclipse-compiler</artifactId>\n" +
" <version>2.8.0-01</version>\n" +
" </dependency>\n" +
" <dependency>\n" +
" <groupId>org.codehaus.groovy</groupId>\n" +
" <artifactId>groovy-eclipse-batch</artifactId>\n" +
" <version>2.1.3-01</version>\n" +
" </dependency>\n" +
" </dependencies>\n" +
" </plugin>\n" +
" <plugin>\n" +
" <groupId>org.codehaus.groovy</groupId>\n" +
" <artifactId>groovy-eclipse-compiler</artifactId>\n" +
" <version>2.8.0-01</version>\n" +
" <extensions>true</extensions>\n" +
" </plugin>\n" +
" </plugins>\n" +
" </pluginManagement>\n" +
"</build>\n");
assertModules("project");
assertSources("project",
"src/main/groovy",
"src/main/java");
assertResources("project", "src/main/resources");
assertTestSources("project",
"src/test/groovy",
"src/test/java");
assertTestResources("project", "src/test/resources");
}
public void testAddingCustomGroovySpecificSources() throws Exception {
createStdProjectFolders();
createProjectSubDirs("src/main/groovy",
"src/foo1",
"src/foo2",
"src/test/groovy",
"src/test-foo1",
"src/test-foo2");
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.codehaus.groovy.maven</groupId>" +
" <artifactId>gmaven-plugin</artifactId>" +
" <executions>" +
" <execution>" +
" <id>one</id>" +
" <goals>" +
" <goal>compile</goal>" +
" </goals>" +
" <configuration>" +
" <sources>" +
" <fileset>" +
" <directory>${pom.basedir}/src/foo1</directory>" +
" </fileset>" +
" <fileset>" +
" <directory>${pom.basedir}/src/foo2</directory>" +
" </fileset>" +
" </sources>" +
" </configuration>" +
" </execution>" +
" <execution>" +
" <id>two</id>" +
" <goals>" +
" <goal>testCompile</goal>" +
" </goals>" +
" <configuration>" +
" <sources>" +
" <fileset>" +
" <directory>${pom.basedir}/src/test-foo1</directory>" +
" </fileset>" +
" <fileset>" +
" <directory>${pom.basedir}/src/test-foo2</directory>" +
" </fileset>" +
" </sources>" +
" </configuration>" +
" </execution>" +
" </executions>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertSources("project",
"src/foo1",
"src/foo2",
"src/main/java");
assertResources("project", "src/main/resources");
assertTestSources("project",
"src/test-foo1",
"src/test-foo2",
"src/test/java");
assertTestResources("project", "src/test/resources");
}
public void testAddingCustomGroovySpecificSourcesByRelativePath() throws Exception {
createProjectSubDirs("src/foo",
"src/test-foo");
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.codehaus.groovy.maven</groupId>" +
" <artifactId>gmaven-plugin</artifactId>" +
" <executions>" +
" <execution>" +
" <id>one</id>" +
" <goals>" +
" <goal>compile</goal>" +
" </goals>" +
" <configuration>" +
" <sources>" +
" <fileset>" +
" <directory>src/foo</directory>" +
" </fileset>" +
" </sources>" +
" </configuration>" +
" </execution>" +
" <execution>" +
" <id>two</id>" +
" <goals>" +
" <goal>testCompile</goal>" +
" </goals>" +
" <configuration>" +
" <sources>" +
" <fileset>" +
" <directory>src/test-foo</directory>" +
" </fileset>" +
" </sources>" +
" </configuration>" +
" </execution>" +
" </executions>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertSources("project", "src/foo");
assertTestSources("project", "src/test-foo");
}
public void testDoNotAddGroovySpecificGeneratedSources() throws Exception {
createStdProjectFolders();
createProjectSubDirs("target/generated-sources/xxx/yyy",
"target/generated-sources/groovy-stubs/main/foo",
"target/generated-sources/groovy-stubs/test/bar");
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.codehaus.groovy.maven</groupId>" +
" <artifactId>gmaven-plugin</artifactId>" +
" <executions>" +
" <execution>" +
" <goals>" +
" <goal>generateStubs</goal>" +
" <goal>compile</goal>" +
" <goal>generateTestStubs</goal>" +
" <goal>testCompile</goal>" +
" </goals>" +
" </execution>" +
" </executions>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertSources("project",
"src/main/java",
"target/generated-sources/xxx");
assertResources("project", "src/main/resources");
assertTestSources("project", "src/test/java");
assertTestResources("project", "src/test/resources");
assertExcludes("project",
"target/generated-sources/groovy-stubs");
}
public void testDoNotAddCustomGroovySpecificGeneratedSources() throws Exception {
createStdProjectFolders();
createProjectSubDirs("target/generated-sources/xxx/yyy",
"target/generated-sources/foo/aaa",
"target/generated-sources/bar/bbb");
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.codehaus.groovy.maven</groupId>" +
" <artifactId>gmaven-plugin</artifactId>" +
" <executions>" +
" <execution>" +
" <id>one</id>" +
" <goals>" +
" <goal>generateStubs</goal>" +
" </goals>" +
" <configuration>" +
" <outputDirectory>${project.build.directory}/generated-sources/foo</outputDirectory>" +
" </configuration>" +
" </execution>" +
" <execution>" +
" <id>two</id>" +
" <goals>" +
" <goal>generateTestStubs</goal>" +
" </goals>" +
" <configuration>" +
" <outputDirectory>${project.build.directory}/generated-sources/bar</outputDirectory>" +
" </configuration>" +
" </execution>" +
" </executions>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertSources("project",
"src/main/java",
"target/generated-sources/xxx");
assertResources("project", "src/main/resources");
assertTestSources("project", "src/test/java");
assertTestResources("project", "src/test/resources");
assertExcludes("project",
"target/generated-sources/bar",
"target/generated-sources/foo");
}
public void testDoNotAddCustomGroovySpecificGeneratedSourcesByRelativePath() throws Exception {
createProjectSubDirs("target/generated-sources/xxx/yyy",
"target/generated-sources/foo/aaa",
"target/generated-sources/bar/bbb");
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.codehaus.groovy.maven</groupId>" +
" <artifactId>gmaven-plugin</artifactId>" +
" <executions>" +
" <execution>" +
" <id>one</id>" +
" <goals>" +
" <goal>generateStubs</goal>" +
" </goals>" +
" <configuration>" +
" <outputDirectory>target/generated-sources/foo</outputDirectory>" +
" </configuration>" +
" </execution>" +
" <execution>" +
" <id>two</id>" +
" <goals>" +
" <goal>generateTestStubs</goal>" +
" </goals>" +
" <configuration>" +
" <outputDirectory>target/generated-sources/bar</outputDirectory>" +
" </configuration>" +
" </execution>" +
" </executions>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertSources("project",
"target/generated-sources/xxx");
assertTestSources("project");
assertExcludes("project",
"target/generated-sources/bar",
"target/generated-sources/foo");
}
public void testUpdatingGroovySpecificGeneratedSourcesOnFoldersUpdate() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.codehaus.groovy.maven</groupId>" +
" <artifactId>gmaven-plugin</artifactId>" +
" <executions>" +
" <execution>" +
" <goals>" +
" <goal>generateStubs</goal>" +
" <goal>generateTestStubs</goal>" +
" </goals>" +
" </execution>" +
" </executions>" +
" </plugin>" +
" </plugins>" +
"</build>");
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
MavenRootModelAdapter a = new MavenRootModelAdapter(myProjectsTree.findProject(myProjectPom),
getModule("project"),
new MavenDefaultModifiableModelsProvider(myProject));
a.unregisterAll(getProjectPath() + "/target", true, true);
a.getRootModel().commit();
}
});
assertSources("project");
assertTestSources("project");
assertExcludes("project");
createProjectSubDirs("src/main/groovy",
"src/test/groovy",
"target/generated-sources/xxx/yyy",
"target/generated-sources/groovy-stubs/main/foo",
"target/generated-sources/groovy-stubs/test/bar");
resolveFoldersAndImport();
assertSources("project",
"src/main/groovy",
"target/generated-sources/xxx");
assertTestSources("project",
"src/test/groovy");
assertExcludes("project",
"target/generated-sources/groovy-stubs");
}
public void testDoNotAddGroovySpecificGeneratedSourcesForGMaven_1_2() throws Exception {
createStdProjectFolders();
createProjectSubDirs("target/generated-sources/xxx/yyy",
"target/generated-sources/groovy-stubs/main/foo",
"target/generated-sources/groovy-stubs/test/bar");
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <groupId>org.codehaus.gmaven</groupId>" +
" <artifactId>gmaven-plugin</artifactId>" +
" <version>1.2</version>" +
" <executions>" +
" <execution>" +
" <goals>" +
" <goal>generateStubs</goal>" +
" <goal>compile</goal>" +
" <goal>generateTestStubs</goal>" +
" <goal>testCompile</goal>" +
" </goals>" +
" </execution>" +
" </executions>" +
" </plugin>" +
" </plugins>" +
"</build>");
assertModules("project");
assertSources("project",
"src/main/java",
"target/generated-sources/xxx");
assertResources("project", "src/main/resources");
assertTestSources("project", "src/test/java");
assertTestResources("project", "src/test/resources");
assertExcludes("project",
"target/generated-sources/groovy-stubs");
}
}