8009115: jtreg tests under jdk/test/javax/script should use nashorn as script engine
Reviewed-by: alanb
--- a/jdk/test/javax/script/CauseExceptionTest.java Tue Feb 26 17:38:29 2013 -0800
+++ b/jdk/test/javax/script/CauseExceptionTest.java Wed Feb 27 17:22:44 2013 +0530
@@ -24,7 +24,7 @@
/*
* @test
* @bug 6869617
- * @summary RhinoScriptEngine bug : ScriptException cause not set (with fix)
+ * @summary ScriptEngine bug : ScriptException cause not set (with fix)
*/
import javax.script.*;
@@ -33,12 +33,12 @@
public class CauseExceptionTest {
public static void main(String[] args) throws ScriptException, NoSuchMethodException {
ScriptEngineManager sem = new ScriptEngineManager();
- ScriptEngine engine = sem.getEngineByName("js");
+ ScriptEngine engine = sem.getEngineByName("nashorn");
if (engine == null) {
System.out.println("Warning: No js engine found; test vacuously passes.");
return;
}
- engine.eval("function hello_world() { println('hello world'); throw 'out of here'; } ");
+ engine.eval("function hello_world() { print('hello world'); throw 'out of here'; } ");
Invocable invocable = (Invocable) engine;
try {
invocable.invokeFunction("hello_world", (Object[])null);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/script/ExceptionTest.java Wed Feb 27 17:22:44 2013 +0530
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2006, 2008, 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 6474943 6705893
+ * @summary Test that script engine exception messages are
+ * available from ScriptException.
+ */
+
+import java.io.*;
+import javax.script.*;
+
+public class ExceptionTest {
+ private static final String ERROR_MSG = "error from JavaScript";
+
+ public static void main(String[] args) throws Exception {
+ ScriptEngineManager m = new ScriptEngineManager();
+ ScriptEngine engine = Helper.getJsEngine(m);
+ if (engine == null) {
+ System.out.println("Warning: No js engine found; test vacuously passes.");
+ return;
+ }
+ engine.put("msg", ERROR_MSG);
+ try {
+ engine.eval("throw new Error(msg);");
+ } catch (ScriptException exp) {
+ if (exp.getMessage().indexOf(ERROR_MSG) == -1) {
+ throw exp;
+ }
+ }
+ try {
+ engine.eval("throw (msg);");
+ } catch (ScriptException exp) {
+ if (exp.getMessage().indexOf(ERROR_MSG) == -1) {
+ throw exp;
+ }
+ }
+ try {
+ CompiledScript scr = ((Compilable)engine).compile("throw new Error(msg);");
+ scr.eval();
+ } catch (ScriptException exp) {
+ if (exp.getMessage().indexOf(ERROR_MSG) == -1) {
+ throw exp;
+ }
+ }
+ try {
+ CompiledScript scr = ((Compilable)engine).compile("throw msg;");
+ scr.eval();
+ } catch (ScriptException exp) {
+ if (exp.getMessage().indexOf(ERROR_MSG) == -1) {
+ throw exp;
+ }
+ }
+ }
+}
--- a/jdk/test/javax/script/GetInterfaceTest.java Tue Feb 26 17:38:29 2013 -0800
+++ b/jdk/test/javax/script/GetInterfaceTest.java Wed Feb 27 17:22:44 2013 +0530
@@ -22,6 +22,7 @@
*/
/*
+ * @run ignore
* @test
* @bug 6960211
* @summary JavaScript engine allows creation of interface although methods not available.
@@ -32,10 +33,10 @@
public class GetInterfaceTest {
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
- ScriptEngine engine = manager.getEngineByName("js");
+ ScriptEngine engine = manager.getEngineByName("nashorn");
if (engine == null) {
- System.out.println("Warning: No engine engine found; test vacuously passes.");
+ System.out.println("Warning: No js engine engine found; test vacuously passes.");
return;
}
--- a/jdk/test/javax/script/Helper.java Tue Feb 26 17:38:29 2013 -0800
+++ b/jdk/test/javax/script/Helper.java Wed Feb 27 17:22:44 2013 +0530
@@ -24,13 +24,13 @@
/**
* Helper class to consolidate testing requirements for a js engine.
- * A js engine is required as part of Sun's product JDK.
+ * A js engine is required as part of Oracle's product JDK.
*/
public class Helper {
private Helper() {}; // Don't instantiate
public static ScriptEngine getJsEngine(ScriptEngineManager m) {
- ScriptEngine e = m.getEngineByName("js");
+ ScriptEngine e = m.getEngineByName("nashorn");
if (e == null &&
System.getProperty("java.runtime.name").startsWith("Java(TM)")) {
// A js engine is requied for Sun's product JDK
--- a/jdk/test/javax/script/RhinoExceptionTest.java Tue Feb 26 17:38:29 2013 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2006, 2008, 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 6474943 6705893
- * @summary Test that Rhino exception messages are
- * available from ScriptException.
- */
-
-import java.io.*;
-import javax.script.*;
-
-public class RhinoExceptionTest {
- private static final String ERROR_MSG = "error from JavaScript";
-
- public static void main(String[] args) throws Exception {
- ScriptEngineManager m = new ScriptEngineManager();
- ScriptEngine engine = Helper.getJsEngine(m);
- if (engine == null) {
- System.out.println("Warning: No js engine found; test vacuously passes.");
- return;
- }
- engine.put("msg", ERROR_MSG);
- try {
- engine.eval("throw new Error(msg);");
- } catch (ScriptException exp) {
- if (exp.getMessage().indexOf(ERROR_MSG) == -1) {
- throw exp;
- }
- }
- try {
- engine.eval("throw (msg);");
- } catch (ScriptException exp) {
- if (exp.getMessage().indexOf(ERROR_MSG) == -1) {
- throw exp;
- }
- }
- try {
- CompiledScript scr = ((Compilable)engine).compile("throw new Error(msg);");
- scr.eval();
- } catch (ScriptException exp) {
- if (exp.getMessage().indexOf(ERROR_MSG) == -1) {
- throw exp;
- }
- }
- try {
- CompiledScript scr = ((Compilable)engine).compile("throw msg;");
- scr.eval();
- } catch (ScriptException exp) {
- if (exp.getMessage().indexOf(ERROR_MSG) == -1) {
- throw exp;
- }
- }
- }
-}
--- a/jdk/test/javax/script/StringWriterPrintTest.java Tue Feb 26 17:38:29 2013 -0800
+++ b/jdk/test/javax/script/StringWriterPrintTest.java Wed Feb 27 17:22:44 2013 +0530
@@ -33,9 +33,9 @@
public class StringWriterPrintTest {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager sem = new ScriptEngineManager();
- ScriptEngine engine = sem.getEngineByName("js");
+ ScriptEngine engine = sem.getEngineByName("nashorn");
if (engine == null) {
- System.out.println("Warning: No js engine found; test vacuously passes.");
+ System.out.println("Warning: No nashorn engine found; test vacuously passes.");
return;
}
StringWriter sw = new StringWriter();
--- a/jdk/test/javax/script/Test3.js Tue Feb 26 17:38:29 2013 -0800
+++ b/jdk/test/javax/script/Test3.js Wed Feb 27 17:22:44 2013 +0530
@@ -1,22 +1,24 @@
+var ScriptContext = javax.script.ScriptContext;
+
if (key == undefined || key != 'engine value') {
throw "unexpected engine scope value";
}
// pre-defined context variable refers to current ScriptContext
-if (context.getAttribute('key', context.GLOBAL_SCOPE) != 'global value') {
+if (context.getAttribute('key', ScriptContext.GLOBAL_SCOPE) != 'global value') {
throw "unexpected global scope value";
}
// change the engine scope value
key = 'new engine value';
-if (context.getAttribute('key', context.GLOBAL_SCOPE) != 'global value') {
+if (context.getAttribute('key', ScriptContext.GLOBAL_SCOPE) != 'global value') {
throw "global scope should not change here";
}
// delete engine scope value
delete key;
-if (key == undefined && key != 'xglobal value') {
+if (key == undefined && key != 'global value') {
throw 'global scope should be visible after engine scope removal';
}
--- a/jdk/test/javax/script/Test5.java Tue Feb 26 17:38:29 2013 -0800
+++ b/jdk/test/javax/script/Test5.java Wed Feb 27 17:22:44 2013 +0530
@@ -48,16 +48,24 @@
System.out.println("engine scope only");
e.put("count", new Integer(1));
- Reader reader = new FileReader(
- new File(System.getProperty("test.src", "."), "Test5.js"));
- engine.eval(reader,ctxt);
+ try (Reader reader = new FileReader(
+ new File(System.getProperty("test.src", "."), "Test5.js"))) {
+ engine.eval(reader,ctxt);
+ }
+
System.out.println("both scopes");
ctxt.setBindings(g, ScriptContext.GLOBAL_SCOPE);
e.put("count", new Integer(2));
- engine.eval(reader,ctxt);
+ try (Reader reader = new FileReader(
+ new File(System.getProperty("test.src", "."), "Test5.js"))) {
+ engine.eval(reader,ctxt);
+ }
System.out.println("only global");
e.put("count", new Integer(3));
- ctxt.setAttribute("key", null, ScriptContext.ENGINE_SCOPE);
- engine.eval(reader,ctxt);
+ ctxt.removeAttribute("key", ScriptContext.ENGINE_SCOPE);
+ try (Reader reader = new FileReader(
+ new File(System.getProperty("test.src", "."), "Test5.js"))) {
+ engine.eval(reader,ctxt);
+ }
}
}
--- a/jdk/test/javax/script/Test5.js Tue Feb 26 17:38:29 2013 -0800
+++ b/jdk/test/javax/script/Test5.js Wed Feb 27 17:22:44 2013 +0530
@@ -1,6 +1,5 @@
-var key;
-var count;
+var ScriptContext = javax.script.ScriptContext;
print(count);
switch (count) {
@@ -9,7 +8,7 @@
if (key != 'value in engine') {
throw "unexpected engine scope value";
}
- if (context.getAttribute("key", context.GLOBAL_SCOPE ) != null) {
+ if (context.getAttribute("key", ScriptContext.GLOBAL_SCOPE ) != null) {
throw "unexpected global scope value";
}
break;
@@ -19,7 +18,7 @@
if (key != 'value in engine') {
throw "unexpected engine scope value";
}
- if (context.getAttribute("key", context.GLOBAL_SCOPE ) !=
+ if (context.getAttribute("key", ScriptContext.GLOBAL_SCOPE ) !=
"value in global") {
throw "unexpected global scope value";
}
@@ -30,7 +29,7 @@
if (key != 'value in global') {
throw "unexpected global scope value";
}
- if (context.getAttribute("key", context.GLOBAL_SCOPE ) !=
+ if (context.getAttribute("key", ScriptContext.GLOBAL_SCOPE ) !=
"value in global") {
throw "unexpected global scope value";
}
--- a/jdk/test/javax/script/Test6.java Tue Feb 26 17:38:29 2013 -0800
+++ b/jdk/test/javax/script/Test6.java Wed Feb 27 17:22:44 2013 +0530
@@ -40,11 +40,23 @@
System.out.println("Warning: No js engine found; test vacuously passes.");
return;
}
- Reader reader = new FileReader(
- new File(System.getProperty("test.src", "."), "Test6.js"));
- engine.eval(reader);
+
+ try (Reader reader = new FileReader(
+ new File(System.getProperty("test.src", "."), "Test6.js"))) {
+ engine.eval(reader);
+ }
Object res = engine.get("res");
- CompiledScript scr = ((Compilable)engine).compile(reader);
+
+ CompiledScript scr = null;
+ try (Reader reader = new FileReader(
+ new File(System.getProperty("test.src", "."), "Test6.js"))) {
+ scr = ((Compilable)engine).compile(reader);
+ }
+
+ if (scr == null) {
+ throw new RuntimeException("compilation failed!");
+ }
+
scr.eval();
Object res1 = engine.get("res");
if (! res.equals(res1)) {
--- a/jdk/test/javax/script/Test7.js Tue Feb 26 17:38:29 2013 -0800
+++ b/jdk/test/javax/script/Test7.js Wed Feb 27 17:22:44 2013 +0530
@@ -1,9 +1,14 @@
//this is the first line of Test7.js
var filename;
+try {
+ load("nashorn:mozilla_compat.js");
+} catch (e) {
+ //ignored
+}
importPackage(java.io);
importPackage(java);
var f = new File(filename);
var r = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
-var firstLine = r.readLine() + '';
+var firstLine = r.readLine();
print(firstLine);
--- a/jdk/test/javax/script/UnescapedBracketRegExTest.java Tue Feb 26 17:38:29 2013 -0800
+++ b/jdk/test/javax/script/UnescapedBracketRegExTest.java Wed Feb 27 17:22:44 2013 +0530
@@ -24,7 +24,7 @@
/*
* @test
* @bug 7012701
- * @summary 7012701 Add a test to check that Rhino's RegExp parser accepts unescaped '['
+ * @summary 7012701 Add a test to check that RegExp parser accepts unescaped '['
*/
import javax.script.*;
@@ -33,9 +33,9 @@
public class UnescapedBracketRegExTest {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager sem = new ScriptEngineManager();
- ScriptEngine engine = sem.getEngineByName("js");
+ ScriptEngine engine = sem.getEngineByName("nashorn");
if (engine == null) {
- System.out.println("Warning: No js engine found; test vacuously passes.");
+ System.out.println("Warning: No nashorn engine found; test vacuously passes.");
return;
}
// the following throws exception
--- a/jdk/test/javax/script/VersionTest.java Tue Feb 26 17:38:29 2013 -0800
+++ b/jdk/test/javax/script/VersionTest.java Wed Feb 27 17:22:44 2013 +0530
@@ -31,9 +31,7 @@
import java.io.*;
public class VersionTest {
-
- private static final String JS_LANG_VERSION = "1.8";
- private static final String JS_ENGINE_VERSION = "1.7 release 3 PRERELEASE";
+ private static final String JS_LANG_VERSION = "ECMA - 262 Edition 5.1";
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
@@ -48,9 +46,18 @@
JS_LANG_VERSION);
}
String engineVersion = jsengine.getFactory().getEngineVersion();
- if (! engineVersion.equals(JS_ENGINE_VERSION)) {
- throw new RuntimeException("Expected Rhino version is " +
- JS_ENGINE_VERSION);
+ String expectedVersion = getNashornVersion();
+ if (! engineVersion.equals(expectedVersion)) {
+ throw new RuntimeException("Expected version is " + expectedVersion);
+ }
+ }
+
+ private static String getNashornVersion() {
+ try {
+ Class versionClass = Class.forName("jdk.nashorn.internal.runtime.Version");
+ return (String) versionClass.getMethod("version").invoke(null);
+ } catch (Exception e) {
+ return "Version Unknown!";
}
}
}