8008789: Enable java access and nashorn runtime tests for jtreg
Reviewed-by: lagergren, jlaskey, hannesw
This commit is contained in:
parent
f688068adf
commit
445b8d2438
nashorn
make
test
@ -275,7 +275,7 @@
|
||||
</condition>
|
||||
<fail unless="representation-ok">Representation test failed - output differs!</fail>
|
||||
<fileset id="test.classes" dir="${build.test.classes.dir}">
|
||||
<include name="**/access/*Test.class"/>
|
||||
<include name="**/api/javaaccess/*Test.class"/>
|
||||
<include name="**/api/scripting/*Test.class"/>
|
||||
<include name="**/codegen/*Test.class"/>
|
||||
<include name="**/parser/*Test.class"/>
|
||||
|
@ -4,4 +4,3 @@
|
||||
|
||||
# The list of keywords supported in the entire test suite
|
||||
keys=2d dnd i18n
|
||||
|
||||
|
@ -36,6 +36,11 @@ import org.testng.TestNG;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @build jdk.nashorn.api.javaaccess.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.BooleanAccessTest
|
||||
* @run testng jdk.nashorn.api.javaaccess.BooleanAccessTest
|
||||
*/
|
||||
public class BooleanAccessTest {
|
||||
|
||||
private static ScriptEngine e = null;
|
||||
@ -50,7 +55,7 @@ public class BooleanAccessTest {
|
||||
final ScriptEngineManager m = new ScriptEngineManager();
|
||||
e = m.getEngineByName("nashorn");
|
||||
e.put("o", o);
|
||||
e.eval("var SharedObject = Packages.jdk.nashorn.internal.access.SharedObject;");
|
||||
e.eval("var SharedObject = Packages.jdk.nashorn.api.javaaccess.SharedObject;");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -39,6 +39,11 @@ import org.testng.TestNG;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @build jdk.nashorn.api.javaaccess.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.MethodAccessTest
|
||||
* @run testng jdk.nashorn.api.javaaccess.MethodAccessTest
|
||||
*/
|
||||
public class MethodAccessTest {
|
||||
|
||||
private static ScriptEngine e = null;
|
||||
@ -54,8 +59,8 @@ public class MethodAccessTest {
|
||||
e = m.getEngineByName("nashorn");
|
||||
o.setEngine(e);
|
||||
e.put("o", o);
|
||||
e.eval("var SharedObject = Packages.jdk.nashorn.internal.access.SharedObject;");
|
||||
e.eval("var Person = Packages.jdk.nashorn.internal.access.Person;");
|
||||
e.eval("var SharedObject = Packages.jdk.nashorn.api.javaaccess.SharedObject;");
|
||||
e.eval("var Person = Packages.jdk.nashorn.api.javaaccess.Person;");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -325,13 +330,13 @@ public class MethodAccessTest {
|
||||
|
||||
@Test
|
||||
public void accessDefaultConstructor() throws ScriptException {
|
||||
e.eval("var dc = new Packages.jdk.nashorn.internal.access.Person()");
|
||||
e.eval("var dc = new Packages.jdk.nashorn.api.javaaccess.Person()");
|
||||
assertEquals(new Person(), e.get("dc"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void accessCustomConstructor() throws ScriptException {
|
||||
e.eval("var cc = new Packages.jdk.nashorn.internal.access.Person(17)");
|
||||
e.eval("var cc = new Packages.jdk.nashorn.api.javaaccess.Person(17)");
|
||||
assertEquals(new Person(17), e.get("cc"));
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,11 @@ import org.testng.TestNG;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @build jdk.nashorn.api.javaaccess.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.NumberAccessTest
|
||||
* @run testng jdk.nashorn.api.javaaccess.NumberAccessTest
|
||||
*/
|
||||
public class NumberAccessTest {
|
||||
|
||||
private static ScriptEngine e = null;
|
||||
@ -50,7 +55,7 @@ public class NumberAccessTest {
|
||||
final ScriptEngineManager m = new ScriptEngineManager();
|
||||
e = m.getEngineByName("nashorn");
|
||||
e.put("o", o);
|
||||
e.eval("var SharedObject = Packages.jdk.nashorn.internal.access.SharedObject;");
|
||||
e.eval("var SharedObject = Packages.jdk.nashorn.api.javaaccess.SharedObject;");
|
||||
}
|
||||
|
||||
// --------------------------------long
|
||||
|
@ -35,6 +35,11 @@ import org.testng.TestNG;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @build jdk.nashorn.api.javaaccess.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.NumberBoxingTest
|
||||
* @run testng jdk.nashorn.api.javaaccess.NumberBoxingTest
|
||||
*/
|
||||
public class NumberBoxingTest {
|
||||
|
||||
private static ScriptEngine e = null;
|
||||
@ -49,7 +54,7 @@ public class NumberBoxingTest {
|
||||
final ScriptEngineManager m = new ScriptEngineManager();
|
||||
e = m.getEngineByName("nashorn");
|
||||
e.put("o", o);
|
||||
e.eval("var SharedObject = Packages.jdk.nashorn.internal.access.SharedObject;");
|
||||
e.eval("var SharedObject = Packages.jdk.nashorn.api.javaaccess.SharedObject;");
|
||||
}
|
||||
|
||||
// --------------------------------long
|
||||
|
@ -35,6 +35,11 @@ import org.testng.TestNG;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @build jdk.nashorn.api.javaaccess.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.ObjectAccessTest
|
||||
* @run testng jdk.nashorn.api.javaaccess.ObjectAccessTest
|
||||
*/
|
||||
public class ObjectAccessTest {
|
||||
|
||||
private static ScriptEngine e = null;
|
||||
@ -49,8 +54,8 @@ public class ObjectAccessTest {
|
||||
final ScriptEngineManager m = new ScriptEngineManager();
|
||||
e = m.getEngineByName("nashorn");
|
||||
e.put("o", o);
|
||||
e.eval("var SharedObject = Packages.jdk.nashorn.internal.access.SharedObject;");
|
||||
e.eval("var Person = Packages.jdk.nashorn.internal.access.Person;");
|
||||
e.eval("var SharedObject = Packages.jdk.nashorn.api.javaaccess.SharedObject;");
|
||||
e.eval("var Person = Packages.jdk.nashorn.api.javaaccess.Person;");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -35,6 +35,11 @@ import org.testng.TestNG;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @build jdk.nashorn.api.javaaccess.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.StringAccessTest
|
||||
* @run testng jdk.nashorn.api.javaaccess.StringAccessTest
|
||||
*/
|
||||
public class StringAccessTest {
|
||||
|
||||
private static ScriptEngine e = null;
|
||||
@ -49,7 +54,7 @@ public class StringAccessTest {
|
||||
final ScriptEngineManager m = new ScriptEngineManager();
|
||||
e = m.getEngineByName("nashorn");
|
||||
e.put("o", o);
|
||||
e.eval("var SharedObject = Packages.jdk.nashorn.internal.access.SharedObject;");
|
||||
e.eval("var SharedObject = Packages.jdk.nashorn.api.javaaccess.SharedObject;");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -27,19 +27,16 @@ package jdk.nashorn.internal.runtime;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
import static org.testng.Assert.fail;
|
||||
|
||||
import java.util.Map;
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineFactory;
|
||||
import javax.script.ScriptEngineManager;
|
||||
import javax.script.ScriptException;
|
||||
import jdk.nashorn.api.scripting.NashornScriptEngineFactory;
|
||||
import jdk.nashorn.internal.runtime.options.Options;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* Basic Context API tests.
|
||||
*
|
||||
* @test
|
||||
* @run testng jdk.nashorn.internal.runtime.ContextTest
|
||||
*/
|
||||
public class ContextTest {
|
||||
// basic context eval test
|
||||
@ -113,83 +110,4 @@ public class ContextTest {
|
||||
final ScriptFunction func = cx.compileScript(source, global);
|
||||
return func != null ? ScriptRuntime.apply(func, global) : null;
|
||||
}
|
||||
|
||||
// Tests for trusted client usage of nashorn script engine factory extension API
|
||||
|
||||
private static class MyClassLoader extends ClassLoader {
|
||||
// to check if script engine uses the specified class loader
|
||||
private final boolean[] reached = new boolean[1];
|
||||
|
||||
@Override
|
||||
protected Class findClass(final String name) throws ClassNotFoundException {
|
||||
// flag that it reached here
|
||||
reached[0] = true;
|
||||
return super.findClass(name);
|
||||
}
|
||||
|
||||
public boolean reached() {
|
||||
return reached[0];
|
||||
}
|
||||
};
|
||||
|
||||
// These are for "private" extension API of NashornScriptEngineFactory that
|
||||
// accepts a ClassLoader and/or command line options.
|
||||
|
||||
@Test
|
||||
public void factoryClassLoaderTest() {
|
||||
final ScriptEngineManager sm = new ScriptEngineManager();
|
||||
for (ScriptEngineFactory fac : sm.getEngineFactories()) {
|
||||
if (fac instanceof NashornScriptEngineFactory) {
|
||||
final NashornScriptEngineFactory nfac = (NashornScriptEngineFactory)fac;
|
||||
final MyClassLoader loader = new MyClassLoader();
|
||||
// set the classloader as app class loader
|
||||
final ScriptEngine e = nfac.getScriptEngine(loader);
|
||||
try {
|
||||
e.eval("Packages.foo");
|
||||
// check that the class loader was attempted
|
||||
assertTrue(loader.reached(), "did not reach class loader!");
|
||||
} catch (final ScriptException se) {
|
||||
se.printStackTrace();
|
||||
fail(se.getMessage());
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fail("Cannot find nashorn factory!");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void factoryClassLoaderAndOptionsTest() {
|
||||
final ScriptEngineManager sm = new ScriptEngineManager();
|
||||
for (ScriptEngineFactory fac : sm.getEngineFactories()) {
|
||||
if (fac instanceof NashornScriptEngineFactory) {
|
||||
final NashornScriptEngineFactory nfac = (NashornScriptEngineFactory)fac;
|
||||
final String[] options = new String[] { "-strict" };
|
||||
final MyClassLoader loader = new MyClassLoader();
|
||||
// set the classloader as app class loader
|
||||
final ScriptEngine e = nfac.getScriptEngine(options, loader);
|
||||
try {
|
||||
e.eval("Packages.foo");
|
||||
// check that the class loader was attempted
|
||||
assertTrue(loader.reached(), "did not reach class loader!");
|
||||
} catch (final ScriptException se) {
|
||||
se.printStackTrace();
|
||||
fail(se.getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
// strict mode - delete of a var should throw SyntaxError
|
||||
e.eval("var d = 2; delete d;");
|
||||
} catch (final ScriptException se) {
|
||||
// check that the error message contains "SyntaxError"
|
||||
assertTrue(se.getMessage().contains("SyntaxError"));
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fail("Cannot find nashorn factory!");
|
||||
}
|
||||
}
|
||||
|
@ -33,6 +33,9 @@ import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* Tests for JSType methods.
|
||||
*
|
||||
* @test
|
||||
* @run testng jdk.nashorn.internal.runtime.JSTypeTest
|
||||
*/
|
||||
public class JSTypeTest {
|
||||
/**
|
||||
|
@ -0,0 +1,119 @@
|
||||
/*
|
||||
* Copyright (c) 2010, 2013, 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. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package jdk.nashorn.internal.runtime;
|
||||
|
||||
|
||||
import static org.testng.Assert.assertTrue;
|
||||
import static org.testng.Assert.fail;
|
||||
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineFactory;
|
||||
import javax.script.ScriptEngineManager;
|
||||
import javax.script.ScriptException;
|
||||
import jdk.nashorn.api.scripting.NashornScriptEngineFactory;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
/**
|
||||
* Tests for trusted client usage of nashorn script engine factory extension API
|
||||
*/
|
||||
public class TrustedScriptEngineTest {
|
||||
private static class MyClassLoader extends ClassLoader {
|
||||
// to check if script engine uses the specified class loader
|
||||
private final boolean[] reached = new boolean[1];
|
||||
|
||||
@Override
|
||||
protected Class findClass(final String name) throws ClassNotFoundException {
|
||||
// flag that it reached here
|
||||
reached[0] = true;
|
||||
return super.findClass(name);
|
||||
}
|
||||
|
||||
public boolean reached() {
|
||||
return reached[0];
|
||||
}
|
||||
};
|
||||
|
||||
// These are for "private" extension API of NashornScriptEngineFactory that
|
||||
// accepts a ClassLoader and/or command line options.
|
||||
|
||||
@Test
|
||||
public void factoryClassLoaderTest() {
|
||||
final ScriptEngineManager sm = new ScriptEngineManager();
|
||||
for (ScriptEngineFactory fac : sm.getEngineFactories()) {
|
||||
if (fac instanceof NashornScriptEngineFactory) {
|
||||
final NashornScriptEngineFactory nfac = (NashornScriptEngineFactory)fac;
|
||||
final MyClassLoader loader = new MyClassLoader();
|
||||
// set the classloader as app class loader
|
||||
final ScriptEngine e = nfac.getScriptEngine(loader);
|
||||
try {
|
||||
e.eval("Packages.foo");
|
||||
// check that the class loader was attempted
|
||||
assertTrue(loader.reached(), "did not reach class loader!");
|
||||
} catch (final ScriptException se) {
|
||||
se.printStackTrace();
|
||||
fail(se.getMessage());
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fail("Cannot find nashorn factory!");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void factoryClassLoaderAndOptionsTest() {
|
||||
final ScriptEngineManager sm = new ScriptEngineManager();
|
||||
for (ScriptEngineFactory fac : sm.getEngineFactories()) {
|
||||
if (fac instanceof NashornScriptEngineFactory) {
|
||||
final NashornScriptEngineFactory nfac = (NashornScriptEngineFactory)fac;
|
||||
final String[] options = new String[] { "-strict" };
|
||||
final MyClassLoader loader = new MyClassLoader();
|
||||
// set the classloader as app class loader
|
||||
final ScriptEngine e = nfac.getScriptEngine(options, loader);
|
||||
try {
|
||||
e.eval("Packages.foo");
|
||||
// check that the class loader was attempted
|
||||
assertTrue(loader.reached(), "did not reach class loader!");
|
||||
} catch (final ScriptException se) {
|
||||
se.printStackTrace();
|
||||
fail(se.getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
// strict mode - delete of a var should throw SyntaxError
|
||||
e.eval("var d = 2; delete d;");
|
||||
} catch (final ScriptException se) {
|
||||
// check that the error message contains "SyntaxError"
|
||||
assertTrue(se.getMessage().contains("SyntaxError"));
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fail("Cannot find nashorn factory!");
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user