Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests.java42
-rw-r--r--org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuildpathTests.java59
-rw-r--r--org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/IncrementalTests.java4
-rw-r--r--org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Problem.java27
-rw-r--r--org.eclipse.jdt.core/buildnotes_jdt-core.html4
5 files changed, 69 insertions, 67 deletions
diff --git a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests.java b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests.java
index 3a900025ca..d517653084 100644
--- a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests.java
+++ b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests.java
@@ -15,6 +15,7 @@ import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Hashtable;
+import java.util.List;
import java.util.Vector;
import junit.framework.*;
@@ -320,16 +321,23 @@ public class BuilderTests extends TestCase {
/** Verifies that the given elements have problems.
*/
protected void expectingProblemsFor(IPath[] roots, String expected) {
- StringBuffer buffer = new StringBuffer();
+ Problem[] problems = allSortedProblems(roots);
+ assumeEquals("Invalid problem(s)!!!", expected, arrayToString(problems)); //$NON-NLS-1$
+ }
+
+ /**
+ * Verifies that the given element has the expected problems.
+ */
+ protected void expectingProblemsFor(IPath root, List expected) {
+ expectingProblemsFor(new IPath[] { root }, expected);
+ }
+
+ /**
+ * Verifies that the given elements have the expected problems.
+ */
+ protected void expectingProblemsFor(IPath[] roots, List expected) {
Problem[] allProblems = allSortedProblems(roots);
- if (allProblems != null) {
- for (int i=0, length=allProblems.length; i<length; i++) {
- if (i>0) buffer.append('\n');
- buffer.append(allProblems[i]);
- }
- }
- String actual = buffer.toString();
- assumeEquals("Invalid problem(s)!!!", expected, actual); //$NON-NLS-1$
+ assumeEquals("Invalid problem(s)!!!", arrayToString(expected.toArray()), arrayToString(allProblems));
}
/** Verifies that the given element has a specific problem.
@@ -369,7 +377,7 @@ public class BuilderTests extends TestCase {
System.out.println("--------------------------------------------------------------------------------");
System.out.println("Missing problem while running test "+getName()+":");
System.out.println(" - expected : " + problem);
- System.out.println(" - current: " + problemsToString(rootProblems));
+ System.out.println(" - current: " + arrayToString(rootProblems));
assumeTrue("missing expected problem: " + problem, false);
}
}
@@ -424,15 +432,19 @@ public class BuilderTests extends TestCase {
/* get the leaf problems for this type */
Problem[] problems = env.getProblemsFor(path);
- System.out.println(problemsToString(problems));
+ System.out.println(arrayToString(problems));
+ System.out.println();
}
}
- protected String problemsToString(Problem[] problems) {
+ protected String arrayToString(Object[] array) {
StringBuffer buffer = new StringBuffer();
- for (int j = 0; j < problems.length; j++) {
- buffer.append(problems[j].toString());
- buffer.append('\n');
+ int length = array == null ? 0 : array.length;
+ for (int i = 0; i < length; i++) {
+ if (array[i] != null) {
+ if (i > 0) buffer.append('\n');
+ buffer.append(array[i].toString());
+ }
}
return buffer.toString();
}
diff --git a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuildpathTests.java b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuildpathTests.java
index 49e4878272..513d427180 100644
--- a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuildpathTests.java
+++ b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuildpathTests.java
@@ -542,7 +542,6 @@ public void testMissingLibrary4() throws JavaModelException {
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=172345
public void testIncompatibleJdkLEvelOnProject() throws JavaModelException {
- this.abortOnFailure = false; // NOT sure this test will pass on releng boxes => do not abort on failures
// Create project
IPath projectPath = env.addProject("Project");
@@ -562,41 +561,33 @@ public void testIncompatibleJdkLEvelOnProject() throws JavaModelException {
project.setOption(JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL, CompilerOptions.WARNING);
incrementalBuild();
long projectRuntimeJDKLevel = CompilerOptions.versionToJdkLevel(projectRuntime);
- StringBuffer buffer = new StringBuffer();
- for (int i = 0, max = classlibs.length; i < max; i++) {
+ int max = classlibs.length;
+ List expectedProblems = new ArrayList();
+ for (int i = 0; i < max; i++) {
String path = project.getPackageFragmentRoot(classlibs[i]).getPath().makeRelative().toString();
Object target = JavaModel.getTarget(ResourcesPlugin.getWorkspace().getRoot(), new Path(path).makeAbsolute(), true);
long libraryJDK = org.eclipse.jdt.internal.core.util.Util.getJdkLevel(target);
if (libraryJDK > projectRuntimeJDKLevel) {
- if (i>0) buffer.append('\n');
- buffer.append(getJdkLevelProblem(projectRuntime, path, IMarker.SEVERITY_WARNING));
+ expectedProblems.add(getJdkLevelProblem(projectRuntime, path, IMarker.SEVERITY_WARNING));
}
}
-
- expectingProblemsFor(
- projectPath,
- String.valueOf(buffer)
- );
+ expectingProblemsFor(projectPath, expectedProblems);
// Change project incompatible jdk level preferences to error, perform incremental build and expect 2 problems
project.setOption(JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL, CompilerOptions.ERROR);
incrementalBuild();
- buffer = new StringBuffer();
- for (int i = 0, max = classlibs.length; i < max; i++) {
+ expectedProblems = new ArrayList();
+ for (int i = 0; i < max; i++) {
String path = project.getPackageFragmentRoot(classlibs[i]).getPath().makeRelative().toString();
Object target = JavaModel.getTarget(ResourcesPlugin.getWorkspace().getRoot(), new Path(path).makeAbsolute(), true);
long libraryJDK = org.eclipse.jdt.internal.core.util.Util.getJdkLevel(target);
if (libraryJDK > projectRuntimeJDKLevel) {
- if (i>0) buffer.append('\n');
- buffer.append(getJdkLevelProblem(projectRuntime, path, IMarker.SEVERITY_ERROR));
+ expectedProblems.add(getJdkLevelProblem(projectRuntime, path, IMarker.SEVERITY_ERROR));
}
}
- expectingProblemsFor(
- projectPath,
- "Problem : The project cannot be built until build path errors are resolved [ resource : </Project> range : <-1,-1> category : <10> severity : <2>]\n" +
- String.valueOf(buffer)
- );
+ expectedProblems.add("Problem : The project cannot be built until build path errors are resolved [ resource : </Project> range : <-1,-1> category : <10> severity : <2>]");
+ expectingProblemsFor(projectPath, expectedProblems);
// Remove project to avoid side effect on other tests
env.removeProject(projectPath);
@@ -610,7 +601,6 @@ public void testIncompatibleJdkLEvelOnWksp() throws JavaModelException {
IEclipsePreferences preferences = manager.getInstancePreferences();
String incompatibleJdkLevel = preferences.get(JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL, null);
try {
- this.abortOnFailure = false; // NOT sure this test will pass on all releng boxes => do not abort on failures
// Create project
IPath projectPath = env.addProject("Project");
@@ -631,42 +621,33 @@ public void testIncompatibleJdkLEvelOnWksp() throws JavaModelException {
preferences.put(JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL, JavaCore.WARNING);
incrementalBuild();
- StringBuffer buffer = new StringBuffer();
- for (int i = 0, max = classlibs.length; i < max; i++) {
+ List expectedProblems = new ArrayList();
+ int max = classlibs.length;
+ for (int i = 0; i < max; i++) {
String path = project.getPackageFragmentRoot(classlibs[i]).getPath().makeRelative().toString();
Object target = JavaModel.getTarget(ResourcesPlugin.getWorkspace().getRoot(), new Path(path).makeAbsolute(), true);
long libraryJDK = org.eclipse.jdt.internal.core.util.Util.getJdkLevel(target);
if (libraryJDK > wkspRuntimeJDKLevel) {
- if (i>0) buffer.append('\n');
- buffer.append(getJdkLevelProblem(wkspRuntime, path, IMarker.SEVERITY_WARNING));
+ expectedProblems.add(getJdkLevelProblem(wkspRuntime, path, IMarker.SEVERITY_WARNING));
}
}
-
- expectingProblemsFor(
- projectPath,
- String.valueOf(buffer)
- );
+ expectingProblemsFor(projectPath, expectedProblems);
// Change workspace incompatible jdk level preferences to error, perform incremental build and expect 2 problems
preferences.put(JavaCore.CORE_INCOMPATIBLE_JDK_LEVEL, JavaCore.ERROR);
incrementalBuild();
- buffer = new StringBuffer();
- for (int i = 0, max = classlibs.length; i < max; i++) {
+ expectedProblems = new ArrayList();
+ for (int i = 0; i < max; i++) {
String path = project.getPackageFragmentRoot(classlibs[i]).getPath().makeRelative().toString();
Object target = JavaModel.getTarget(ResourcesPlugin.getWorkspace().getRoot(), new Path(path).makeAbsolute(), true);
long libraryJDK = org.eclipse.jdt.internal.core.util.Util.getJdkLevel(target);
if (libraryJDK > wkspRuntimeJDKLevel) {
- if (i>0) buffer.append('\n');
- buffer.append(getJdkLevelProblem(wkspRuntime, path, IMarker.SEVERITY_ERROR));
+ expectedProblems.add(getJdkLevelProblem(wkspRuntime, path, IMarker.SEVERITY_ERROR));
}
}
-
- expectingProblemsFor(
- projectPath,
- "Problem : The project cannot be built until build path errors are resolved [ resource : </Project> range : <-1,-1> category : <10> severity : <2>]\n" +
- String.valueOf(buffer)
- );
+ expectedProblems.add("Problem : The project cannot be built until build path errors are resolved [ resource : </Project> range : <-1,-1> category : <10> severity : <2>]");
+ expectingProblemsFor(projectPath, expectedProblems);
// Remove project to avoid side effect on other tests
env.removeProject(projectPath);
diff --git a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/IncrementalTests.java b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/IncrementalTests.java
index 62012c6d54..c9125f84cb 100644
--- a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/IncrementalTests.java
+++ b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/IncrementalTests.java
@@ -188,9 +188,9 @@ public class IncrementalTests extends BuilderTests {
incrementalBuild(projectPath);
expectingProblemsFor(
new IPath[]{ pathToA, pathToB, pathToC },
- "Problem : The public type _A must be defined in its own file [ resource : </Project/src/p/A.java> range : <25,27> category : <40> severity : <2>]\n" +
"Problem : A cannot be resolved to a type [ resource : </Project/src/p/B.java> range : <35,36> category : <40> severity : <2>]\n" +
- "Problem : The hierarchy of the type C is inconsistent [ resource : </Project/src/p/C.java> range : <25,26> category : <40> severity : <2>]"
+ "Problem : The hierarchy of the type C is inconsistent [ resource : </Project/src/p/C.java> range : <25,26> category : <40> severity : <2>]\n" +
+ "Problem : The public type _A must be defined in its own file [ resource : </Project/src/p/A.java> range : <25,27> category : <40> severity : <2>]"
);
expectingSpecificProblemFor(pathToA, new Problem("_A", "The public type _A must be defined in its own file", pathToA, 25, 27, CategorizedProblem.CAT_TYPE, IMarker.SEVERITY_ERROR)); //$NON-NLS-1$ //$NON-NLS-2$
expectingSpecificProblemFor(pathToB, new Problem("B", "A cannot be resolved to a type", pathToB, 35, 36, CategorizedProblem.CAT_TYPE, IMarker.SEVERITY_ERROR)); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Problem.java b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Problem.java
index cd2b3e56bf..2f72a363c2 100644
--- a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Problem.java
+++ b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Problem.java
@@ -118,17 +118,24 @@ public int getSeverity() {
}
public int compareTo(Object o) {
- Problem problem = (Problem) o;
- if (!(this.getLocation().equals(problem.getLocation()))) {
- return this.getLocation().compareTo(problem.getLocation());
- }
- if (this.getStart() < problem.getStart()) {
- return -1;
- }
- if (this.getEnd() < problem.getEnd()) {
- return -1;
+ if(o instanceof Problem){
+ Problem problem = (Problem) o;
+ /* Replace initial implementation with toString() comparison otherwise the problems order may change
+ * when different VM are used (see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=213570)...
+ if (!(this.getLocation().equals(problem.getLocation()))) {
+ return this.getLocation().compareTo(problem.getLocation());
+ }
+ if (this.getStart() < problem.getStart()) {
+ return -1;
+ }
+ if (this.getEnd() < problem.getEnd()) {
+ return -1;
+ }
+ return this.getMessage().compareTo(problem.getMessage());
+ */
+ return this.toString().compareTo(problem.toString());
}
- return this.getMessage().compareTo(problem.getMessage());
+ return -1;
}
}
diff --git a/org.eclipse.jdt.core/buildnotes_jdt-core.html b/org.eclipse.jdt.core/buildnotes_jdt-core.html
index 8f3593e2cb..74aa59ab43 100644
--- a/org.eclipse.jdt.core/buildnotes_jdt-core.html
+++ b/org.eclipse.jdt.core/buildnotes_jdt-core.html
@@ -49,7 +49,9 @@ Eclipse SDK 3.4M5 - %date% - 3.4 MILESTONE 5
<h2>What's new in this drop</h2>
<h3>Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=213509">213509</a>
+<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=213570">213570</a>
+IncrementalTests#testRenameMainType() fails with IBM JRE 6.0
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=213509">213509</a>
[dom] IMethodBinding.getParameterAnnotations returns annotations for wrong parameter
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=204749">204749</a>
[1.5][javadoc] NPE in JavadocQualifiedTypeReference

Back to the top