8047675: tools/javac/defaultMethods/Assertions.java fails if run with -enableassertions (-ea)
Summary: Using ToolBox to start new Java processes, to avoid passing default VM options to the newly started process.
Reviewed-by: jjg
--- a/langtools/test/tools/javac/defaultMethods/Assertions.java Thu Sep 04 08:48:29 2014 +0200
+++ b/langtools/test/tools/javac/defaultMethods/Assertions.java Thu Sep 04 08:49:20 2014 +0200
@@ -26,20 +26,6 @@
import java.util.HashSet;
import java.util.Set;
-/*
- * @test
- * @bug 8025141
- * @ignore 8047675 test fails if run with assertions enabled in jtreg
- * @summary Interfaces must not contain non-public fields, ensure $assertionsDisabled
- * is not generated into an interface
- * @compile Assertions.java
- * @run main/othervm -da test.Assertions
- * @run main/othervm -ea:test.Assertions test.Assertions Inner
- * @run main/othervm -ea:test.Outer test.Assertions Outer
- * @run main/othervm -ea:test.Another test.Assertions Another.Inner
- * @run main/othervm -ea:test... test.Assertions Inner Outer Another.Inner
- */
-
public class Assertions {
interface Inner {
default void testInner() {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/defaultMethods/AssertionsTest.java Thu Sep 04 08:49:20 2014 +0200
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8025141
+ * @summary Interfaces must not contain non-public fields, ensure $assertionsDisabled
+ * is not generated into an interface
+ * @library /tools/lib
+ * @build ToolBox Assertions AssertionsTest
+ * @run main AssertionsTest -da
+ * @run main AssertionsTest -ea:test.Assertions Inner
+ * @run main AssertionsTest -ea:test.Outer Outer
+ * @run main AssertionsTest -ea:test.Another Another.Inner
+ * @run main AssertionsTest -ea:test... Inner Outer Another.Inner
+ */
+
+import java.util.Arrays;
+
+public class AssertionsTest {
+
+ public static void main(String... args) throws Exception {
+ String testClasses = System.getProperty("test.classes");
+ ToolBox tb = new ToolBox();
+ tb.new JavaTask().classpath(testClasses)
+ .vmOptions(args[0])
+ .className("test.Assertions")
+ .classArgs(Arrays.copyOfRange(args, 1, args.length))
+ .includeStandardOptions(false)
+ .run(ToolBox.Expect.SUCCESS)
+ .writeAll();
+ }
+
+}
--- a/langtools/test/tools/lib/ToolBox.java Thu Sep 04 08:48:29 2014 +0200
+++ b/langtools/test/tools/lib/ToolBox.java Thu Sep 04 08:49:20 2014 +0200
@@ -1568,6 +1568,20 @@
}
/**
+ * Sets whether or not the standard VM and java options for the test should be passed
+ * to the new VM instance. If this method is not called, the default behavior is that
+ * the options will be passed to the new VM instance.
+ *
+ * @param includeStandardOptions whether or not the standard VM and java options for
+ * the test should be passed to the new VM instance.
+ * @return this task object
+ */
+ public JavaTask includeStandardOptions(boolean includeStandardOptions) {
+ this.includeStandardOptions = includeStandardOptions;
+ return this;
+ }
+
+ /**
* {@inheritDoc}
* @return the name "java"
*/