Commit ab20d9e0 authored by nik's avatar nik
Browse files

maven tests: fail test if errors occurred during importing by default

Those tests which really check importing of incorrect xml use special 'importProjectWithErrors' methods. This way we'll detect problems if some test actually doesn't work as expected because its pom.xml content is invalid (see IDEA-CR-31189 for example).
parent 42e56dca
No related merge requests found
Showing with 329 additions and 293 deletions
+329 -293
......@@ -365,8 +365,12 @@ public abstract class MavenImportingTestCase extends MavenTestCase {
importProjectWithProfiles();
}
protected void importProjectWithErrors(boolean maven2) {
doImportProjects(maven2, Collections.singletonList(myProjectPom), false);
}
protected void importProjectWithProfiles(String... profiles) {
doImportProjects(true, Collections.singletonList(myProjectPom), profiles);
doImportProjects(true, Collections.singletonList(myProjectPom), true, profiles);
}
protected void importProject(VirtualFile file) {
......@@ -374,7 +378,11 @@ public abstract class MavenImportingTestCase extends MavenTestCase {
}
protected void importProjects(VirtualFile... files) {
doImportProjects(true, Arrays.asList(files));
doImportProjects(true, Arrays.asList(files), true);
}
protected void importProjectsWithErrors(VirtualFile... files) {
doImportProjects(true, Arrays.asList(files), false);
}
protected void importProjectWithMaven3(@NonNls String xml) {
......@@ -387,10 +395,10 @@ public abstract class MavenImportingTestCase extends MavenTestCase {
}
protected void importProjectWithMaven3WithProfiles(String... profiles) {
doImportProjects(false, Collections.singletonList(myProjectPom), profiles);
doImportProjects(false, Collections.singletonList(myProjectPom), true, profiles);
}
private void doImportProjects(boolean useMaven2, final List<VirtualFile> files, String... profiles) {
private void doImportProjects(boolean useMaven2, final List<VirtualFile> files, boolean failOnReadingError, String... profiles) {
MavenServerManager.getInstance().setUseMaven2(useMaven2);
initProjectsManager(false);
......@@ -402,9 +410,9 @@ public abstract class MavenImportingTestCase extends MavenTestCase {
myProjectsManager.importProjects();
});
for (MavenProject each : myProjectsTree.getProjects()) {
if (each.hasReadingProblems()) {
System.out.println(each + " has problems: " + each.getProblems());
if (failOnReadingError) {
for (MavenProject each : myProjectsTree.getProjects()) {
assertFalse("Failed to import Maven project: " + each.getProblems(), each.hasReadingProblems());
}
}
}
......
......@@ -309,7 +309,7 @@ public class MavenDependencyCompletionAndResolutionTest extends MavenDomWithIndi
"<artifactId>m1</artifactId>" +
"<version>1</version>");
createProjectPom("<groupId>test</groupId>" +
configureProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -320,14 +320,14 @@ public class MavenDependencyCompletionAndResolutionTest extends MavenDomWithIndi
" </dependency>" +
"</dependencies>");
importProjects(myProjectPom, m);
importProjectsWithErrors(myProjectPom, m);
assertCompletionVariants(myProjectPom, "m1");
createModulePom("m1", "");
importProjects(myProjectPom, m);
importProjectsWithErrors(myProjectPom, m);
createProjectPom("<groupId>test</groupId>" +
configureProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -347,7 +347,7 @@ public class MavenDependencyCompletionAndResolutionTest extends MavenDomWithIndi
"<artifactId>m1</artifactId>" +
"<version>1</version>");
createProjectPom("<groupId>test</groupId>" +
configureProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -358,7 +358,7 @@ public class MavenDependencyCompletionAndResolutionTest extends MavenDomWithIndi
" </dependency>" +
"</dependencies>");
importProjects(myProjectPom, m);
importProjectsWithErrors(myProjectPom, m);
assertCompletionVariants(myProjectPom, "m1");
......@@ -400,26 +400,27 @@ public class MavenDependencyCompletionAndResolutionTest extends MavenDomWithIndi
}
public void testResolveManagedDependency() throws Exception {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
configureProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<dependencyManagement>" +
" <dependencies>" +
" <dependency>" +
" <groupId>junit</groupId>" +
" <artifactId>junit</artifactId>" +
" <version>4.0</version>" +
" </dependency>" +
" </dependencies>" +
"</dependencyManagement>" +
"<dependencyManagement>" +
" <dependencies>" +
" <dependency>" +
" <groupId>junit</groupId>" +
" <artifactId>junit</artifactId>" +
" <version>4.0</version>" +
" </dependency>" +
" </dependencies>" +
"</dependencyManagement>" +
"<dependencies>" +
" <dependency>" +
" <groupId>junit</groupId>" +
" <artifactId>junit<caret></artifactId>" +
" </dependency>" +
"</dependencies>");
"<dependencies>" +
" <dependency>" +
" <groupId>junit</groupId>" +
" <artifactId>junit<caret></artifactId>" +
" </dependency>" +
"</dependencies>");
importProject();
String filePath = myIndicesFixture.getRepositoryHelper().getTestDataPath("local1/junit/junit/4.0/junit-4.0.pom");
VirtualFile f = LocalFileSystem.getInstance().refreshAndFindFileByPath(filePath);
......@@ -753,7 +754,7 @@ public class MavenDependencyCompletionAndResolutionTest extends MavenDomWithIndi
}
public void testTypeCompletion() {
createProjectPom("<groupId>test</groupId>" +
configureProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......
......@@ -51,6 +51,7 @@ import com.intellij.usages.UsageTarget;
import com.intellij.usages.UsageTargetUtil;
import com.intellij.util.containers.ContainerUtil;
import gnu.trove.THashMap;
import org.intellij.lang.annotations.Language;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
......@@ -96,6 +97,11 @@ public abstract class MavenDomTestCase extends MavenImportingTestCase {
return PsiManager.getInstance(myProject).findFile(f);
}
protected void configureProjectPom(@Language(value = "XML", prefix = "<project>", suffix = "</project>") String xml) {
VirtualFile file = createProjectPom(xml);
configTest(file);
}
protected void configTest(VirtualFile f) {
if (Comparing.equal(myConfigTimestamps.get(f), f.getTimeStamp())) return;
myFixture.configureFromExistingVirtualFile(f);
......
......@@ -272,38 +272,41 @@ public class MavenParentCompletionAndResolutionTest extends MavenDomWithIndicesT
}
public void testHighlightingAbsentGroupId() {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<<error descr=\"'groupId' child tag should be defined\">parent</error>>" +
" <artifactId><error>junit</error></artifactId>" +
" <version><error>4.0</error></version>" +
"</parent>");
"<<error descr=\"'groupId' child tag should be defined\">parent</error>>" +
" <artifactId><error>junit</error></artifactId>" +
" <version><error>4.0</error></version>" +
"</parent>");
importProjectWithErrors(true);
checkHighlighting();
}
public void testHighlightingAbsentArtifactId() {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<<error descr=\"'artifactId' child tag should be defined\">parent</error>>" +
" <groupId>junit</groupId>" +
" <version><error>4.0</error></version>" +
"</parent>");
"<<error descr=\"'artifactId' child tag should be defined\">parent</error>>" +
" <groupId>junit</groupId>" +
" <version><error>4.0</error></version>" +
"</parent>");
importProjectWithErrors(true);
checkHighlighting();
}
public void testHighlightingAbsentVersion() {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<<error descr=\"'version' child tag should be defined\">parent</error>>" +
" <groupId>junit</groupId>" +
" <artifactId>junit</artifactId>" +
"</parent>");
"<<error descr=\"'version' child tag should be defined\">parent</error>>" +
" <groupId>junit</groupId>" +
" <artifactId>junit</artifactId>" +
"</parent>");
importProjectWithErrors(true);
checkHighlighting();
}
......
......@@ -163,7 +163,7 @@ public class MavenPropertyResolverTest extends MavenImportingTestCase {
"</properties>");
importProject();
importProjectWithErrors(true);
assertEquals("${prop1}", resolve("${prop1}", myProjectPom));
assertEquals("${prop3}", resolve("${prop3}", myProjectPom));
assertEquals("${prop5}", resolve("${prop5}", myProjectPom));
......
......@@ -29,7 +29,7 @@ class MavenSurefirePluginTest extends MavenDomTestCase {
}
void testCompletion() {
importProject("""
configureProjectPom("""
<groupId>simpleMaven</groupId>
<artifactId>simpleMaven</artifactId>
<packaging>jar</packaging>
......@@ -48,6 +48,7 @@ class MavenSurefirePluginTest extends MavenDomTestCase {
</plugins>
</build>
""")
importProject()
createProjectSubFile("src/main/A.txt", "")
createProjectSubFile("src/test/A.txt", "")
......@@ -57,7 +58,7 @@ class MavenSurefirePluginTest extends MavenDomTestCase {
}
void testCompletionSurefireProperties() {
importProject("""
configureProjectPom("""
<groupId>simpleMaven</groupId>
<artifactId>simpleMaven</artifactId>
<version>1.0</version>
......@@ -76,12 +77,13 @@ class MavenSurefirePluginTest extends MavenDomTestCase {
</plugins>
</build>
""")
importProject()
assertCompletionVariants(myProjectPom, "surefire.forkNumber", "surefire.threadNumber")
}
void testCompletionSurefirePropertiesOutsideConfiguration() {
importProject("""
configureProjectPom("""
<groupId>simpleMaven</groupId>
<artifactId>simpleMaven</artifactId>
<version>1.0</version>
......@@ -101,6 +103,7 @@ class MavenSurefirePluginTest extends MavenDomTestCase {
</plugins>
</build>
""")
importProject()
assertCompletionVariants(myProjectPom)
}
......
......@@ -120,18 +120,19 @@ public class DependenciesImportingTest extends MavenImportingTestCase {
}
public void testSystemDependencyWithoutPath() {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<dependencies>" +
" <dependency>" +
" <groupId>junit</groupId>" +
" <artifactId>junit</artifactId>" +
" <version>4.0</version>" +
" <scope>system</scope>" +
" </dependency>" +
"</dependencies>");
"<dependencies>" +
" <dependency>" +
" <groupId>junit</groupId>" +
" <artifactId>junit</artifactId>" +
" <version>4.0</version>" +
" <scope>system</scope>" +
" </dependency>" +
"</dependencies>");
importProjectWithErrors(true);
assertModules("project");
assertModuleLibDeps("project"); // dependency was not added due to reported pom model problem.
......@@ -187,7 +188,7 @@ public class DependenciesImportingTest extends MavenImportingTestCase {
" </dependency>" +
"</dependencies>");
importProject();
importProjectWithErrors(true);
assertModuleLibDeps("project", "Maven: group:lib:1");
}
......@@ -1315,7 +1316,7 @@ public class DependenciesImportingTest extends MavenImportingTestCase {
" </dependency>" +
"</dependencies>");
importProject();
importProjectWithErrors(true);
assertModules("project", "m");
assertModuleLibDeps("m");
......
......@@ -117,7 +117,7 @@ public class DependenciesManagementTest extends MavenImportingTestCase {
" <artifactId>junit</artifactId>" +
" </dependency>" +
"</dependencies>");
importProjects(bom, project);
importProjectsWithErrors(bom, project);
assertModules("bom", "project");
// reset embedders and try to resolve project from scratch in specific order - imported one goes first
......
......@@ -56,9 +56,10 @@ public class FoldersImportingTest extends MavenImportingTestCase {
}
public void testInvalidProjectHasContentRoot() {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1");
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1");
importProjectWithErrors(true);
assertModules("project");
assertContentRoots("project", getProjectPath());
......
......@@ -263,17 +263,18 @@ public class MiscImportingTest extends MavenImportingTestCase {
File repo = new File(myDir, "repo");
setRepositoryPath(repo.getPath());
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <artifactId>maven-surefire-plugin</artifactId>" +
" </plugin>" +
" </plugins>" +
"</build>");
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"" +
"<build>" +
" <plugins>" +
" <plugin>" +
" <artifactId>maven-surefire-plugin</artifactId>" +
" </plugin>" +
" </plugins>" +
"</build>");
importProjectWithErrors(true);
List<MavenProjectProblem> problems = myProjectsTree.getRootProjects().get(0).getProblems();
assertTrue(problems.size() > 0);
......@@ -330,20 +331,21 @@ public class MiscImportingTest extends MavenImportingTestCase {
setRepositoryPath(helper.getTestDataPath("plugins"));
getMavenGeneralSettings().setWorkOffline(true);
importProjectWithMaven3("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<description>throw!</description>" +
"" +
"<build>" +
" <extensions>" +
" <extension>" +
" <groupId>intellij.test</groupId>" +
" <artifactId>maven-extension</artifactId>" +
" <version>1.0</version>" +
" </extension>" +
" </extensions>" +
"</build>");
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<description>throw!</description>" +
"" +
"<build>" +
" <extensions>" +
" <extension>" +
" <groupId>intellij.test</groupId>" +
" <artifactId>maven-extension</artifactId>" +
" <version>1.0</version>" +
" </extension>" +
" </extensions>" +
"</build>");
importProjectWithErrors(false);
List<MavenProject> projects = myProjectsTree.getProjects();
assertEquals(1, projects.size());
......
......@@ -262,15 +262,16 @@ public class StructureImportingTest extends MavenImportingTestCase {
}
public void testRecursiveParent() {
importProject("<parent>" +
" <groupId>org.apache.maven.archetype.test</groupId>" +
" <artifactId>test-create-2</artifactId>" +
" <version>1.0-SNAPSHOT</version>" +
"</parent>" +
"<artifactId>test-create-2</artifactId>" +
"<name>Maven archetype Test create-2-subModule</name>" +
"<packaging>pom</packaging>");
createProjectPom("<parent>" +
" <groupId>org.apache.maven.archetype.test</groupId>" +
" <artifactId>test-create-2</artifactId>" +
" <version>1.0-SNAPSHOT</version>" +
"</parent>" +
"<artifactId>test-create-2</artifactId>" +
"<name>Maven archetype Test create-2-subModule</name>" +
"<packaging>pom</packaging>");
importProjectWithErrors(true);
}
public void testParentWithoutARelativePath() {
......
......@@ -166,7 +166,7 @@ class MavenDuplicatedDependencyInspectionTest extends MavenDomTestCase {
</dependencies>
""")
importProject()
importProjectWithErrors(true)
checkHighlighting(myProjectPom, true, false, true)
}
......
......@@ -851,7 +851,7 @@ public class MavenProjectsManagerTest extends MavenImportingTestCase {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1");
importProject();
importProjectWithErrors(true);
assertModules("project");
assertFalse(called[0]); // on import
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment