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
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();
});
if (failOnReadingError) {
for (MavenProject each : myProjectsTree.getProjects()) {
if (each.hasReadingProblems()) {
System.out.println(each + " has problems: " + each.getProblems());
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,7 +400,7 @@ public class MavenDependencyCompletionAndResolutionTest extends MavenDomWithIndi
}
public void testResolveManagedDependency() throws Exception {
importProject("<groupId>test</groupId>" +
configureProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -420,6 +420,7 @@ public class MavenDependencyCompletionAndResolutionTest extends MavenDomWithIndi
" <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,7 +272,7 @@ public class MavenParentCompletionAndResolutionTest extends MavenDomWithIndicesT
}
public void testHighlightingAbsentGroupId() {
importProject("<groupId>test</groupId>" +
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -280,11 +280,12 @@ public class MavenParentCompletionAndResolutionTest extends MavenDomWithIndicesT
" <artifactId><error>junit</error></artifactId>" +
" <version><error>4.0</error></version>" +
"</parent>");
importProjectWithErrors(true);
checkHighlighting();
}
public void testHighlightingAbsentArtifactId() {
importProject("<groupId>test</groupId>" +
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -292,11 +293,12 @@ public class MavenParentCompletionAndResolutionTest extends MavenDomWithIndicesT
" <groupId>junit</groupId>" +
" <version><error>4.0</error></version>" +
"</parent>");
importProjectWithErrors(true);
checkHighlighting();
}
public void testHighlightingAbsentVersion() {
importProject("<groupId>test</groupId>" +
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -304,6 +306,7 @@ public class MavenParentCompletionAndResolutionTest extends MavenDomWithIndicesT
" <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,7 +120,7 @@ public class DependenciesImportingTest extends MavenImportingTestCase {
}
public void testSystemDependencyWithoutPath() {
importProject("<groupId>test</groupId>" +
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -132,6 +132,7 @@ public class DependenciesImportingTest extends MavenImportingTestCase {
" <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>" +
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1");
importProjectWithErrors(true);
assertModules("project");
assertContentRoots("project", getProjectPath());
......
......@@ -17,6 +17,7 @@ package org.jetbrains.idea.maven.importing;
import com.intellij.idea.Bombed;
import com.intellij.openapi.application.WriteAction;
import org.intellij.lang.annotations.Language;
import org.jetbrains.idea.maven.MavenCustomRepositoryHelper;
import org.jetbrains.idea.maven.MavenImportingTestCase;
import org.jetbrains.idea.maven.model.MavenProjectProblem;
......@@ -29,7 +30,7 @@ import java.util.List;
public class InvalidProjectImportingTest extends MavenImportingTestCase {
public void testUnknownProblem() {
importProject("");
importProjectWithErrors("");
assertModules("project");
MavenProject root = getRootProjects().get(0);
......@@ -40,7 +41,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
createProjectPom("");
WriteAction.runAndWait(() -> myProjectPom.setBinaryContent(new byte[0]));
importProject();
importProjectWithErrors();
assertModules("project");
......@@ -49,7 +50,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
}
public void testUndefinedPropertyInHeader() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>${undefined}</artifactId>" +
"<version>1</version>");
......@@ -59,7 +60,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
}
public void testUnresolvedParent() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -76,7 +77,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
}
public void testUnresolvedParentForInvalidProject() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -99,7 +100,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
}
public void testMissingModules() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<packaging>pom</packaging>" +
......@@ -128,7 +129,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
createModulePom("foo", "<groupId>test</groupId>" +
"<artifactId>foo</artifactId>" +
"<version>1</version>");
importProject();
importProjectWithErrors();
assertModules("project", "foo");
MavenProject root = getRootProjects().get(0);
......@@ -149,7 +150,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
"<artifactId>foo</artifactId>" +
"<version>1"); // invalid tag
importProject();
importProjectWithErrors();
assertModules("project", "foo");
MavenProject root = getRootProjects().get(0);
......@@ -187,7 +188,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
"<artifactId>bar</artifactId>" +
"<version>1"); // invalid tag
importProject();
importProjectWithErrors();
assertModules("project", "foo", "bar (1)", "bar (2)", "bar (3) (org.test)");
}
......@@ -204,7 +205,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
"<artifactId>foo</artifactId>" +
"<version>1</version>");
importProject();
importProjectWithErrors();
assertModules("project", "foo");
}
......@@ -222,13 +223,13 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
"<artifactId>foo</artifactId>" +
"<version>1</version>");
importProject();
importProjectWithErrors();
assertModules("project", "foo");
}
public void testInvalidRepositoryLayout() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -247,7 +248,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
}
public void testDoNotFailIfRepositoryHasEmptyLayout() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -271,7 +272,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
}
public void testDoNotFailIfDistributionRepositoryHasEmptyValues() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -328,7 +329,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
" </dependency>" +
"</dependencies>");
importProject();
importProjectWithErrors();
MavenProject root = getRootProjects().get(0);
......@@ -355,7 +356,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
" </dependency>" +
"</dependencies>");
importProject();
importProjectWithErrors();
assertModuleLibDeps("project");
......@@ -390,7 +391,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
"<artifactId>m2</artifactId>" +
"<version>1</version>");
importProject();
importProjectWithErrors();
MavenProject root = getRootProjects().get(0);
assertProblems(root);
......@@ -448,7 +449,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
" </dependency>" +
"</dependencies>");
importProject();
importProjectWithErrors();
MavenProject root = getRootProjects().get(0);
assertProblems(root);
......@@ -459,7 +460,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
@Bombed(user = "Vladislav.Soroka", year=2020, month = Calendar.APRIL, day = 1, description = "temporary disabled")
public void testUnresolvedExtensionsAfterImport() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -479,7 +480,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
@Bombed(user = "Vladislav.Soroka", year=2020, month = Calendar.APRIL, day = 1, description = "temporary disabled")
public void testUnresolvedExtensionsAfterResolve() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -499,7 +500,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
}
public void testDoesNotReportExtensionsThatWereNotTriedToBeResolved() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -522,7 +523,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
}
public void testDoesNotReportExtensionsThatDoNotHaveJarFiles() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -591,7 +592,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
" </extensions>" +
"</build>");
importProject();
importProjectWithErrors();
MavenProject root = getRootProjects().get(0);
......@@ -605,7 +606,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
@Bombed(user = "Vladislav.Soroka", year=2020, month = Calendar.APRIL, day = 1, description = "temporary disabled")
public void testUnresolvedPlugins() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -628,7 +629,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
setRepositoryPath(helper.getTestDataPath("plugins"));
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -647,7 +648,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
@Bombed(user = "Vladislav.Soroka", year=2020, month = Calendar.APRIL, day = 1, description = "temporary disabled")
public void testUnresolvedPluginsAsExtensions() {
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
......@@ -671,7 +672,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
public void testInvalidSettingsXml() throws Exception {
updateSettingsXml("<localRepo<<");
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>");
assertModules("project");
......@@ -683,7 +684,7 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
public void testInvalidProfilesXml() {
createProfilesXml("<prof<<");
importProject("<groupId>test</groupId>" +
importProjectWithErrors("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>");
assertModules("project");
......@@ -692,6 +693,15 @@ public class InvalidProjectImportingTest extends MavenImportingTestCase {
assertProblems(root, "'profiles.xml' has syntax errors");
}
private void importProjectWithErrors(@Language(value = "XML", prefix = "<project>", suffix = "</project>") String s) {
createProjectPom(s);
importProjectWithErrors(true);
}
private void importProjectWithErrors() {
importProjectWithErrors(true);
}
private static void assertProblems(MavenProject project, String... expectedProblems) {
List<String> actualProblems = new ArrayList<>();
for (MavenProjectProblem each : project.getProblems()) {
......
......@@ -263,7 +263,7 @@ public class MiscImportingTest extends MavenImportingTestCase {
File repo = new File(myDir, "repo");
setRepositoryPath(repo.getPath());
importProject("<groupId>test</groupId>" +
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"" +
......@@ -274,6 +274,7 @@ public class MiscImportingTest extends MavenImportingTestCase {
" </plugin>" +
" </plugins>" +
"</build>");
importProjectWithErrors(true);
List<MavenProjectProblem> problems = myProjectsTree.getRootProjects().get(0).getProblems();
assertTrue(problems.size() > 0);
......@@ -330,7 +331,7 @@ public class MiscImportingTest extends MavenImportingTestCase {
setRepositoryPath(helper.getTestDataPath("plugins"));
getMavenGeneralSettings().setWorkOffline(true);
importProjectWithMaven3("<groupId>test</groupId>" +
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<description>throw!</description>" +
......@@ -344,6 +345,7 @@ public class MiscImportingTest extends MavenImportingTestCase {
" </extension>" +
" </extensions>" +
"</build>");
importProjectWithErrors(false);
List<MavenProject> projects = myProjectsTree.getProjects();
assertEquals(1, projects.size());
......
......@@ -262,7 +262,7 @@ public class StructureImportingTest extends MavenImportingTestCase {
}
public void testRecursiveParent() {
importProject("<parent>" +
createProjectPom("<parent>" +
" <groupId>org.apache.maven.archetype.test</groupId>" +
" <artifactId>test-create-2</artifactId>" +
" <version>1.0-SNAPSHOT</version>" +
......@@ -271,6 +271,7 @@ public class StructureImportingTest extends MavenImportingTestCase {
"<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