diff options
author | jay | 2018-09-26 07:06:28 +0000 |
---|---|---|
committer | jay | 2018-09-26 07:06:28 +0000 |
commit | 3ccd57c481cc77b3726464874886fdf9669c7a5c (patch) | |
tree | 8dfdfbd7e0bd3568fc04f02ff7fb2627706d883f /org.eclipse.jdt.compiler.apt.tests | |
parent | 2a269a8600046558a3c0af2e8dcd9a733817dfd9 (diff) | |
parent | 1aa58eac3b0985df8c3358b7c4aec62fb9a6b2e8 (diff) | |
download | eclipse.jdt.core-3ccd57c481cc77b3726464874886fdf9669c7a5c.tar.gz eclipse.jdt.core-3ccd57c481cc77b3726464874886fdf9669c7a5c.tar.xz eclipse.jdt.core-3ccd57c481cc77b3726464874886fdf9669c7a5c.zip |
Merge branch 'BETA_JAVA11'
# Conflicts:
# org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/dispatch/BatchFilerImpl.java
# org.eclipse.jdt.compiler.apt/src/org/eclipse/jdt/internal/compiler/apt/util/EclipseFileManager.java
# org.eclipse.jdt.compiler.tool.tests/src/org/eclipse/jdt/compiler/tool/tests/CompilerToolTests.java
# org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompiler.java
# org.eclipse.jdt.compiler.tool/src/org/eclipse/jdt/internal/compiler/tool/EclipseFileManager.java
# org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractNullAnnotationTest.java
# org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AmbiguousMethodTest.java
# org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java
# org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP286ReservedWordTest.java
# org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JEP286Test.java
# org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/MethodParametersAttributeTest.java
# org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeLambdaExpressionsTest.java
# org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/PolymorphicSignatureTest.java
# org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ProblemConstructorTest.java
# org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ProblemTypeAndMethodTest.java
# org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/StaticImportTest.java
# org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/junit/extension/TestCase.java
# org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/RunAllJava10Tests.java
# org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter10Test.java
# org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests10.java
# org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugs10Tests.java
# org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/NameLookupTests2.java
# org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java
# org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/ExplicitConstructorCall.java
# org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/MessageSend.java
# org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java
# org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/env/ISourceModule.java
# org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/JavadocTagConstants.java
# org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java
# org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java
# org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IAttributeNamesConstants.java
# org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IClassFileReader.java
# org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPool.java
# org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolConstant.java
# org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolEntry.java
# org.eclipse.jdt.core/model/org/eclipse/jdt/core/util/IConstantPoolEntry2.java
# org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ClassFileReader.java
# org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/ConstantPool.java
# org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/util/Disassembler.java
Change-Id: If63162fb2d7e2e3a57e078289a4b6cf31c31ab66
Diffstat (limited to 'org.eclipse.jdt.compiler.apt.tests')
6 files changed, 406 insertions, 5 deletions
diff --git a/org.eclipse.jdt.compiler.apt.tests/lib/apttestprocessors8.jar b/org.eclipse.jdt.compiler.apt.tests/lib/apttestprocessors8.jar Binary files differindex d4769c36c2..06baf9adef 100644 --- a/org.eclipse.jdt.compiler.apt.tests/lib/apttestprocessors8.jar +++ b/org.eclipse.jdt.compiler.apt.tests/lib/apttestprocessors8.jar diff --git a/org.eclipse.jdt.compiler.apt.tests/processors8/META-INF/services/javax.annotation.processing.Processor b/org.eclipse.jdt.compiler.apt.tests/processors8/META-INF/services/javax.annotation.processing.Processor index 839d9ea2ee..8b8bccf832 100644 --- a/org.eclipse.jdt.compiler.apt.tests/processors8/META-INF/services/javax.annotation.processing.Processor +++ b/org.eclipse.jdt.compiler.apt.tests/processors8/META-INF/services/javax.annotation.processing.Processor @@ -1,2 +1,3 @@ org.eclipse.jdt.compiler.apt.tests.processors.elements.Java8ElementProcessor
-org.eclipse.jdt.compiler.apt.tests.processors.elements.Java9ElementProcessor
\ No newline at end of file +org.eclipse.jdt.compiler.apt.tests.processors.elements.Java9ElementProcessor
+org.eclipse.jdt.compiler.apt.tests.processors.elements.Java11ElementProcessor
\ No newline at end of file diff --git a/org.eclipse.jdt.compiler.apt.tests/processors8/org/eclipse/jdt/compiler/apt/tests/processors/elements/Java11ElementProcessor.java b/org.eclipse.jdt.compiler.apt.tests/processors8/org/eclipse/jdt/compiler/apt/tests/processors/elements/Java11ElementProcessor.java new file mode 100644 index 0000000000..590205e9d7 --- /dev/null +++ b/org.eclipse.jdt.compiler.apt.tests/processors8/org/eclipse/jdt/compiler/apt/tests/processors/elements/Java11ElementProcessor.java @@ -0,0 +1,245 @@ +/******************************************************************************* + * Copyright (c) 2019 IBM Corporation. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +package org.eclipse.jdt.compiler.apt.tests.processors.elements; + +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import javax.annotation.processing.Filer; +import javax.annotation.processing.Messager; +import javax.annotation.processing.ProcessingEnvironment; +import javax.annotation.processing.RoundEnvironment; +import javax.annotation.processing.SupportedAnnotationTypes; +import javax.lang.model.element.Modifier; +import javax.lang.model.element.TypeElement; +import javax.tools.JavaFileObject; + +import org.eclipse.jdt.compiler.apt.tests.processors.base.BaseProcessor; + +/** + * A processor that explores the java 9 specific elements and validates the lambda and + * type annotated elements. To enable this processor, add + * -Aorg.eclipse.jdt.compiler.apt.tests.processors.elements.Java11ElementProcessor to the command line. + * @since 3.14 + */ +@SupportedAnnotationTypes("*") +public class Java11ElementProcessor extends BaseProcessor { + boolean reportSuccessAlready = true; + RoundEnvironment roundEnv = null; + Messager _messager = null; + Filer _filer = null; + @Override + public synchronized void init(ProcessingEnvironment processingEnv) { + super.init(processingEnv); + _elementUtils = processingEnv.getElementUtils(); + _messager = processingEnv.getMessager(); + _filer = processingEnv.getFiler(); + } + // Always return false from this processor, because it supports "*". + // The return value does not signify success or failure! + @Override + public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { + if (roundEnv.processingOver()) { + return false; + } + + this.roundEnv = roundEnv; + Map<String, String> options = processingEnv.getOptions(); + if (!options.containsKey(this.getClass().getName())) { + // Disable this processor unless we are intentionally performing the test. + return false; + } else { + try { + if (!invokeTestMethods(options)) { + testAll(); + } + if (this.reportSuccessAlready) { + super.reportSuccess(); + } + } catch (AssertionFailedError e) { + super.reportError(getExceptionStackTrace(e)); + } catch (Throwable e) { + e.printStackTrace(); + } + } + return false; + } + + private boolean invokeTestMethods(Map<String, String> options) throws Throwable { + Method testMethod = null; + Set<String> keys = options.keySet(); + boolean testsFound = false; + for (String option : keys) { + if (option.startsWith("test")) { + try { + testMethod = this.getClass().getDeclaredMethod(option, new Class[0]); + if (testMethod != null) { + testsFound = true; + testMethod.invoke(this, new Object[0]); + } + } catch (InvocationTargetException e) { + throw e.getCause(); + } catch (Exception e) { + super.reportError(getExceptionStackTrace(e)); + } + } + } + return testsFound; + } + + public void testAll() throws AssertionFailedError { + } + + public void testFiler1() throws IOException { + String typeName = "abc.internal.TypeInAModule"; + TypeElement typeElement = _elementUtils.getTypeElement(typeName); + assertNotNull("type element should not be null", typeElement); + Object obj = null; + try { + obj = _filer.createSourceFile("mod.a/" + typeName); + obj = typeName; + } catch (IOException e) { + } + assertNull("Source should not be created", obj); + } + public void testFiler2() throws IOException { + String typeName = "abc.internal.TypeInAModule"; + TypeElement typeElement = _elementUtils.getTypeElement(typeName); + assertNotNull("type element should not be null", typeElement); + Object obj = null; + try { + obj = _filer.createSourceFile(typeName); + obj = typeName; + } catch (IOException e) { + } + assertNull("Source should not be created", obj); + } + public void testFiler3() throws IOException { + String typeName = "mod.a/abc.internal.AnotherTypeInAModule"; + JavaFileObject obj = null; + try { + obj = _filer.createSourceFile(typeName); + } catch (IOException e) { + } + assertNotNull("Source should have been created", obj); + String name = obj.getName(); + if (!name.contains("mod.a")) { + reportError("source should be created inside the module"); + } + + } + @Override + public void reportError(String msg) { + throw new AssertionFailedError(msg); + } + private String getExceptionStackTrace(Throwable t) { + StringBuffer buf = new StringBuffer(t.getMessage()); + StackTraceElement[] traces = t.getStackTrace(); + for (int i = 0; i < traces.length; i++) { + StackTraceElement trace = traces[i]; + buf.append("\n\tat " + trace); + if (i == 12) + break; // Don't dump all stacks + } + return buf.toString(); + } + public void assertModifiers(Set<Modifier> modifiers, String[] expected) { + assertEquals("Incorrect no of modifiers", modifiers.size(), expected.length); + Set<String> actual = new HashSet<String>(expected.length); + for (Modifier modifier : modifiers) { + actual.add(modifier.toString()); + } + for(int i = 0, length = expected.length; i < length; i++) { + boolean result = actual.remove(expected[i]); + if (!result) reportError("Modifier not present :" + expected[i]); + } + if (!actual.isEmpty()) { + reportError("Unexpected modifiers present:" + actual.toString()); + } + } + public void assertTrue(String msg, boolean value) { + if (!value) reportError(msg); + } + public void assertFalse(String msg, boolean value) { + if (value) reportError(msg); + } + public void assertSame(String msg, Object obj1, Object obj2) { + if (obj1 != obj2) { + reportError(msg + ", should be " + obj1.toString() + " but " + obj2.toString()); + } + } + public void assertNotSame(String msg, Object obj1, Object obj2) { + if (obj1 == obj2) { + reportError(msg + ", " + obj1.toString() + " should not be same as " + obj2.toString()); + } + } + public void assertNotNull(String msg, Object obj) { + if (obj == null) { + reportError(msg); + } + } + public void assertNull(String msg, Object obj) { + if (obj != null) { + reportError(msg); + } + } + public void assertEquals(String message, Object expected, Object actual) { + if (equalsRegardingNull(expected, actual)) { + return; + } else { + reportError(message + ", expected " + expected.toString() + " but was " + actual.toString()); + } + } + + public void assertEquals(String message, Object expected, Object alternateExpected, Object actual) { + if (equalsRegardingNull(expected, actual) || equalsRegardingNull(alternateExpected, actual)) { + return; + } else { + reportError(message + ", expected " + expected.toString() + " but was " + actual.toString()); + } + } + + static boolean equalsRegardingNull(Object expected, Object actual) { + if (expected == null) { + return actual == null; + } + return expected.equals(actual); + } + + public void assertEquals(String msg, int expected, int actual) { + if (expected != actual) { + StringBuffer buf = new StringBuffer(); + buf.append(msg); + buf.append(", expected " + expected + " but was " + actual); + reportError(buf.toString()); + } + } + public void assertEquals(Object expected, Object actual) { + if (expected != actual) { + + } + } + private class AssertionFailedError extends Error { + private static final long serialVersionUID = 1L; + + public AssertionFailedError(String msg) { + super(msg); + } + } +} diff --git a/org.eclipse.jdt.compiler.apt.tests/processors8/org/eclipse/jdt/compiler/apt/tests/processors/elements/Java9ElementProcessor.java b/org.eclipse.jdt.compiler.apt.tests/processors8/org/eclipse/jdt/compiler/apt/tests/processors/elements/Java9ElementProcessor.java index f563e89900..50925490a4 100644 --- a/org.eclipse.jdt.compiler.apt.tests/processors8/org/eclipse/jdt/compiler/apt/tests/processors/elements/Java9ElementProcessor.java +++ b/org.eclipse.jdt.compiler.apt.tests/processors8/org/eclipse/jdt/compiler/apt/tests/processors/elements/Java9ElementProcessor.java @@ -63,11 +63,26 @@ public class Java9ElementProcessor extends BaseProcessor { boolean reportSuccessAlready = true; RoundEnvironment roundEnv = null; Messager _messager = null; + boolean isJre11; + boolean isJre10; @Override public synchronized void init(ProcessingEnvironment processingEnv) { super.init(processingEnv); _typeUtils = processingEnv.getTypeUtils(); _messager = processingEnv.getMessager(); + try { + SourceVersion.valueOf("RELEASE_11"); + this.isJre10 = true; + this.isJre11 = true; + } catch(IllegalArgumentException iae) { + } + if (!this.isJre11) { + try { + SourceVersion.valueOf("RELEASE_10"); + this.isJre10 = true; + } catch(IllegalArgumentException iae) { + } + } } // Always return false from this processor, because it supports "*". // The return value does not signify success or failure! @@ -386,10 +401,8 @@ public class Java9ElementProcessor extends BaseProcessor { * Test java.base module can be loaded and verify its exports attributes */ public void testModuleJavaBase1() { - int modCount = 108; try { SourceVersion.valueOf("RELEASE_10"); - modCount = 102; } catch(IllegalArgumentException iae) { } Set<? extends ModuleElement> allModuleElements = _elementUtils.getAllModuleElements(); @@ -402,7 +415,7 @@ public class Java9ElementProcessor extends BaseProcessor { assertNotNull("java.base module null", base); List<? extends Directive> directives = base.getDirectives(); List<Directive> filterDirective = filterDirective(directives, DirectiveKind.EXPORTS); - assertEquals("incorrect no of exports", modCount , filterDirective.size()); + assertEquals("incorrect no of exports", this.isJre11 ? 108 : (this.isJre10 ? 102 : 108) , filterDirective.size()); ExportsDirective pack = null; for (Directive directive : filterDirective) { ModuleElement.ExportsDirective exports = (ExportsDirective) directive; @@ -517,7 +530,7 @@ public class Java9ElementProcessor extends BaseProcessor { assertNotNull("java.sql module null", base); List<? extends Directive> directives = base.getDirectives(); List<Directive> filterDirective = filterDirective(directives, DirectiveKind.REQUIRES); - assertEquals("Incorrect no of requires", 3, filterDirective.size()); + assertEquals("Incorrect no of requires", this.isJre11 ? 4 : 3, filterDirective.size()); RequiresDirective req = null; for (Directive directive : filterDirective) { if (((RequiresDirective) directive).getDependency().getQualifiedName().toString().equals("java.logging")) { diff --git a/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/BatchTestUtils.java b/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/BatchTestUtils.java index 32728716e9..576b5f57c5 100644 --- a/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/BatchTestUtils.java +++ b/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/BatchTestUtils.java @@ -123,6 +123,10 @@ public class BatchTestUtils { public static void compileInModuleMode(JavaCompiler compiler, List<String> options, String processor, File targetFolder, DiagnosticListener<? super JavaFileObject> listener, boolean multiModule) { + compileInModuleMode(compiler, options, processor, targetFolder, listener, multiModule, true); + } + public static void compileInModuleMode(JavaCompiler compiler, List<String> options, String processor, + File targetFolder, DiagnosticListener<? super JavaFileObject> listener, boolean multiModule, boolean processBinariesAgain) { StandardJavaFileManager manager = compiler.getStandardFileManager(null, Locale.getDefault(), Charset.defaultCharset()); Iterable<? extends File> location = manager.getLocation(StandardLocation.CLASS_PATH); // create new list containing inputfile @@ -151,6 +155,9 @@ public class BatchTestUtils { System.err.println("Compilation failed: " + errorOutput); junit.framework.TestCase.assertTrue("Compilation failed : " + errorOutput, false); } + if (!processBinariesAgain) { + return; + } List<String> classes = new ArrayList<>(); try { manager = compiler.getStandardFileManager(null, Locale.getDefault(), Charset.defaultCharset()); diff --git a/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/Java11ElementsTests.java b/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/Java11ElementsTests.java new file mode 100644 index 0000000000..ad75de6624 --- /dev/null +++ b/org.eclipse.jdt.compiler.apt.tests/src/org/eclipse/jdt/compiler/apt/tests/Java11ElementsTests.java @@ -0,0 +1,135 @@ +/******************************************************************************* + * Copyright (c) 2018 IBM Corporation. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +package org.eclipse.jdt.compiler.apt.tests; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import javax.lang.model.SourceVersion; +import javax.tools.JavaCompiler; +import javax.tools.ToolProvider; + +import org.eclipse.jdt.internal.compiler.tool.EclipseCompiler; + +import junit.framework.TestCase; + +public class Java11ElementsTests extends TestCase { + private static final String MODULE_PROC = "org.eclipse.jdt.compiler.apt.tests.processors.elements.Java11ElementProcessor"; + + public void testFiler1() throws IOException { + JavaCompiler compiler = BatchTestUtils.getEclipseCompiler(); + internalTest2(compiler, MODULE_PROC, "testFiler1", null); + } + public void testFiler1Javac() throws IOException { + JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); + internalTest2(compiler, MODULE_PROC, "testFiler1", null); + } + public void testFiler2() throws IOException { + JavaCompiler compiler = BatchTestUtils.getEclipseCompiler(); + internalTest2(compiler, MODULE_PROC, "testFiler2", null); + } + public void testFiler2Javac() throws IOException { + JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); + internalTest2(compiler, MODULE_PROC, "testFiler2", null); + } + public void testFiler3() throws IOException { + JavaCompiler compiler = BatchTestUtils.getEclipseCompiler(); + internalTest2(compiler, MODULE_PROC, "testFiler3", null); + } + public void testFiler3Javac() throws IOException { + JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); + internalTest2(compiler, MODULE_PROC, "testFiler3", null); + } + protected void internalTestWithBinary(JavaCompiler compiler, String processor, String compliance, String testMethod, String testClass, String resourceArea) throws IOException { + if (!canRunJava11()) { + return; + } + System.clearProperty(processor); + File targetFolder = TestUtils.concatPath(BatchTestUtils.getSrcFolderName(), "targets", resourceArea); + if (testClass == null || testClass.equals("")) { + BatchTestUtils.copyResources("targets/" + resourceArea, targetFolder); + } else { + BatchTestUtils.copyResource("targets/" + resourceArea + "/" + testClass, targetFolder); + } + + + List<String> options = new ArrayList<String>(); + options.add("-A" + processor); + options.add("-A" + testMethod); + options.add("-processor"); + options.add(processor); + // Javac 1.8 doesn't (yet?) support the -1.8 option + if (compiler instanceof EclipseCompiler) { + options.add("-" + compliance); + } else { + options.add("-source"); + options.add(compliance); + } + BatchTestUtils.compileTreeAndProcessBinaries(compiler, options, processor, targetFolder, null); + + // If it succeeded, the processor will have set this property to "succeeded"; + // if not, it will set it to an error value. + assertEquals("succeeded", System.getProperty(processor)); + } + /* + * Tests are run in multi-module mode + */ + private void internalTest2(JavaCompiler compiler, String processor, String testMethod, String testClass) throws IOException { + if (!canRunJava11()) { + return; + } + System.clearProperty(MODULE_PROC); + File srcRoot = TestUtils.concatPath(BatchTestUtils.getSrcFolderName()); + BatchTestUtils.copyResources("mod_locations/modules", srcRoot); + + List<String> options = new ArrayList<String>(); + options.add("-processor"); + options.add(MODULE_PROC); + options.add("-A" + MODULE_PROC); + options.add("-A" + testMethod); + if (compiler instanceof EclipseCompiler) { + options.add("-9"); + } + BatchTestUtils.compileInModuleMode(compiler, options, MODULE_PROC, srcRoot, null, true, false); + assertEquals("succeeded", System.getProperty(MODULE_PROC)); + } + public boolean canRunJava11() { + try { + SourceVersion.valueOf("RELEASE_11"); + } catch(IllegalArgumentException iae) { + return false; + } + return true; + } + /* (non-Javadoc) + * @see junit.framework.TestCase#setUp() + */ + @Override + protected void setUp() throws Exception { + super.setUp(); + BatchTestUtils.init(); + } + + /* (non-Javadoc) + * @see junit.framework.TestCase#tearDown() + */ + @Override + protected void tearDown() throws Exception { + super.tearDown(); + } + +}
\ No newline at end of file |