| /* |
| * 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"); |
| } |
| |
| } |