Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2018-11-20 20:59:59 +0000
committerStephan Herrmann2018-11-20 20:59:59 +0000
commita5bf25c4133dbe77906073141ef6175680eec0b9 (patch)
tree5b35ade979a5e26289f13bce843d67bd52f06841
parentdbcc0b651d5dae2253128cda7857b97d2adb630f (diff)
downloadeclipse.jdt.core-I20181120-1800.tar.gz
eclipse.jdt.core-I20181120-1800.tar.xz
eclipse.jdt.core-I20181120-1800.zip
Bug 539749 - [test] rewrite tests that use a JDK module removed in 11I20181120-1800
- rewrite test using module oracle.net missing from openjdk Change-Id: I5c879fbdc854741b800c3b73c76258ce0b6d2f1c
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachSourceTests.java61
1 files changed, 60 insertions, 1 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachSourceTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachSourceTests.java
index 1be91df358..a7d9e60fac 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachSourceTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AttachSourceTests.java
@@ -25,6 +25,7 @@ import junit.framework.Test;
import org.eclipse.core.filesystem.URIUtil;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IResource;
@@ -37,6 +38,7 @@ import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jdt.core.IBuffer;
import org.eclipse.jdt.core.IClassFile;
+import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
@@ -1902,12 +1904,18 @@ public void testModule2() throws CoreException, IOException {
return;
}
try {
- createJava9Project("Test", new String[]{"src"});
+ IJavaProject prj = createJava9Project("Test", new String[]{"src"});
String moduleSrc =
"module test {\n" +
" requires oracle.net;\n" +
"}\n";
createFile("/Test/src/module-info.java", moduleSrc);
+ prj.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null);
+ IMarker[] markers = prj.getProject().findMarkers(null, true, IResource.DEPTH_INFINITE);
+ if (markers.length == 1 && markers[0].toString().contains("oracle.net cannot be resolved to a module")) {
+ System.out.println("Skipping "+getClass().getName()+".testModule2() because module oracle.net is unavailable");
+ return; // oracle.net is missing from openjdk builds
+ }
ICompilationUnit unit = getCompilationUnit("/Test/src/module-info.java");
int start = moduleSrc.indexOf("oracle.net");
int length = "oracle.net".length();
@@ -1926,4 +1934,55 @@ public void testModule2() throws CoreException, IOException {
deleteProject("Test");
}
}
+public void testModule2b() throws CoreException, IOException {
+ if (!isJRE9) {
+ System.err.println(this.getClass().getName()+'.'+getName()+" needs a Java 9 JRE - skipped");
+ return;
+ }
+ try {
+ // create project with incomplete source attachment:
+ String javaHome = System.getProperty("java.home") + File.separator;
+ Path bootModPath = new Path(javaHome +"/lib/jrt-fs.jar");
+ createSourceZip(
+ new String[] {
+ "java.base/module-info.java",
+ "module java.base {}\n",
+ "java.se.ee/module-info.java",
+ "module java.se.ee {}\n"
+ },
+ getWorkspacePath()+"/Test/src.zip");
+ Path sourceAttachment = new Path("/Test/src.zip");
+ IClasspathEntry jrtEntry;
+ jrtEntry = JavaCore.newLibraryEntry(bootModPath, sourceAttachment, null, null, null, false);
+ IJavaProject project = this.createJavaProject("Test", new String[] {"src"}, new String[0],
+ new String[0], "bin", "9");
+ IClasspathEntry[] old = project.getRawClasspath();
+ IClasspathEntry[] newPath = new IClasspathEntry[old.length +1];
+ System.arraycopy(old, 0, newPath, 0, old.length);
+ newPath[old.length] = jrtEntry;
+ project.setRawClasspath(newPath, null);
+ //
+ String moduleSrc =
+ "module test {\n" +
+ " requires java.desktop;\n" +
+ "}\n";
+ createFile("/Test/src/module-info.java", moduleSrc);
+ ICompilationUnit unit = getCompilationUnit("/Test/src/module-info.java");
+ int start = moduleSrc.indexOf("java.desktop");
+ int length = "java.desktop".length();
+ IJavaElement[] elements = unit.codeSelect(start, length);
+ assertEquals("expected #elements", 1, elements.length);
+
+ IModuleDescription javaDesktop = (IModuleDescription) elements[0];
+ IModularClassFile cf = (IModularClassFile) javaDesktop.getClassFile();
+ assertSourceEquals(
+ "Unexpected source for class file java.desktop/module-info.class",
+ null,
+ cf.getSource());
+ ISourceRange javadocRange = javaDesktop.getJavadocRange();
+ assertEquals("javadoc from source", null, javadocRange);
+ } finally {
+ deleteProject("Test");
+ }
+}
}

Back to the top