8167018: Nashorn and jjs should support --module-path and --add-modules options
authorsundar
Fri, 07 Oct 2016 21:28:00 +0530
changeset 41374 092e014ed01e
parent 41373 795a8ec00c21
child 41375 45f3adbff4f7
8167018: Nashorn and jjs should support --module-path and --add-modules options Reviewed-by: jlaskey, hannesw
jdk/test/tools/jjs/addmodulesrepeat.js
jdk/test/tools/jjs/com.greetings/com/greetings/Hello.java
jdk/test/tools/jjs/com.greetings/module-info.java
jdk/test/tools/jjs/jjs-modulepathTest.sh
jdk/test/tools/jjs/modulepath.js
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/tools/jjs/addmodulesrepeat.js	Fri Oct 07 21:28:00 2016 +0530
@@ -0,0 +1,17 @@
+/*
+ * This is the test JavaScript program used in jjs-modulepathTest.sh
+ */
+
+print("--module-path passed: " + $OPTIONS._module_path);
+print("--add-modules passed: " + $OPTIONS._add_modules);
+
+if ($OPTIONS._add_modules != "java.base,com.greetings") {
+    throw new Error("--add-modules values are not merged!");
+}
+
+var Hello = com.greetings.Hello;
+
+var moduleName = Hello.class.module.name;
+if (moduleName != "com.greetings") {
+    throw new Error("Expected module name to be com.greetings");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/tools/jjs/com.greetings/com/greetings/Hello.java	Fri Oct 07 21:28:00 2016 +0530
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2016, 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.
+ */
+
+package com.greetings;
+
+public class Hello {
+    public static String greet() {
+        return "Hello World!";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/tools/jjs/com.greetings/module-info.java	Fri Oct 07 21:28:00 2016 +0530
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2016, 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.
+ */
+
+module com.greetings {
+    exports com.greetings;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/tools/jjs/jjs-modulepathTest.sh	Fri Oct 07 21:28:00 2016 +0530
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2016, 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 8167018
+# @summary Nashorn and jjs should support --module-path and --add-modules options
+# @run shell jjs-modulepathTest.sh
+# Tests --module-path option to set the module path for jjs
+
+. ${TESTSRC-.}/common.sh
+
+setup
+
+mkdir -p ${TESTCLASSES}/com.greetings
+rm -rf ${TESTCLASSES}/com.greetings
+
+${JAVAC} ${TESTSRC}/com.greetings/module-info.java \
+    ${TESTSRC}/com.greetings/com/greetings/*.java   \
+     -d ${TESTCLASSES}/com.greetings
+
+# no --add-modules passed. This should result in error.
+${JJS} -scripting --module-path ${TESTCLASSES} ${TESTSRC}/modulepath.js
+
+if [ $? -ne 0 ]; then
+   echo "Error thrown as expected when --add-modules is missing!"
+else
+   echo "Should have thrown error for missing --add-modules!"
+   exit 1
+fi
+
+# proper usage of --module-path with --add-modules
+${JJS} -scripting --module-path ${TESTCLASSES} --add-modules com.greetings ${TESTSRC}/modulepath.js
+if [ $? -ne 0 ]; then
+   exit 1
+fi
+
+# check that repeated --add-modules values are combined
+${JJS} -scripting --module-path ${TESTCLASSES} --add-modules java.base --add-modules com.greetings ${TESTSRC}/addmodulesrepeat.js
+if [ $? -ne 0 ]; then
+   exit 1
+fi
+
+rm -rf ${TESTCLASSES}/com.greetings
+echo "Passed"
+exit 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/tools/jjs/modulepath.js	Fri Oct 07 21:28:00 2016 +0530
@@ -0,0 +1,21 @@
+/*
+ * This is the test JavaScript program used in jjs-modulepathTest.sh
+ */
+
+print("--module-path passed: " + $OPTIONS._module_path);
+print("--add-modules passed: " + $OPTIONS._add_modules);
+
+var Hello = com.greetings.Hello;
+var moduleName = Hello.class.module.name;
+if (moduleName != "com.greetings") {
+    throw new Error("Expected module name to be com.greetings");
+} else {
+    print("Module name is " + moduleName);
+}
+
+var msg = Hello.greet();
+if (msg != "Hello World!") {
+    throw new Error("Expected 'Hello World!'");
+} else {
+    print(msg);
+}