8268725: jshell does not support the --enable-native-access option
Reviewed-by: sundar
This commit is contained in:
parent
7b67a49f83
commit
8a44e093dc
src/jdk.jshell/share/classes/jdk/internal/jshell/tool
test/langtools/jdk/jshell
@ -274,6 +274,7 @@ public class JShellTool implements MessageHandler {
|
||||
ADD_EXPORTS("--add-exports", false),
|
||||
ENABLE_PREVIEW("--enable-preview", true),
|
||||
SOURCE_RELEASE("-source", true, true, true, false, false), // virtual option, generated by --enable-preview
|
||||
ENABLE_NATIVE_ACCESS("--enable-native-access", true, true, false, true, true),
|
||||
TO_COMPILER("-C", false, false, true, false, false),
|
||||
TO_REMOTE_VM("-R", false, false, false, true, false),;
|
||||
final String optionFlag;
|
||||
@ -363,6 +364,7 @@ public class JShellTool implements MessageHandler {
|
||||
private final OptionSpec<String> argAddModules = parser.accepts("add-modules").withRequiredArg();
|
||||
private final OptionSpec<String> argAddExports = parser.accepts("add-exports").withRequiredArg();
|
||||
private final OptionSpecBuilder argEnablePreview = parser.accepts("enable-preview");
|
||||
private final OptionSpecBuilder argEnableNativeAccess = parser.accepts("enable-native-access");
|
||||
private final NonOptionArgumentSpec<String> argNonOptions = parser.nonOptions();
|
||||
|
||||
private Options opts = new Options();
|
||||
@ -471,6 +473,10 @@ public class JShellTool implements MessageHandler {
|
||||
OptionKind.SOURCE_RELEASE.optionFlag,
|
||||
System.getProperty("java.specification.version")));
|
||||
}
|
||||
if (options.has(argEnableNativeAccess)) {
|
||||
opts.addAll(OptionKind.ENABLE_NATIVE_ACCESS, List.of(
|
||||
OptionKind.ENABLE_NATIVE_ACCESS.optionFlag, "ALL-UNNAMED"));
|
||||
}
|
||||
|
||||
if (failed) {
|
||||
exitCode = 1;
|
||||
|
@ -207,6 +207,8 @@ where possible options include:\n\
|
||||
\ --add-modules <module>(,<module>)*\n\
|
||||
\ Specify modules to resolve, or all modules on the\n\
|
||||
\ module path if <module> is ALL-MODULE-PATHs\n\
|
||||
\ --enable-native-access\n\
|
||||
\ Allow code to run restricted native methods\n\
|
||||
\ --enable-preview Allow code to depend on preview features of this release\n\
|
||||
\ --startup <file> One run replacement for the startup definitions\n\
|
||||
\ --no-startup Do not run the startup definitions\n\
|
||||
|
63
test/langtools/jdk/jshell/ToolEnableNativeAccessTest.java
Normal file
63
test/langtools/jdk/jshell/ToolEnableNativeAccessTest.java
Normal file
@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright (c) 2021, 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 8268725
|
||||
* @summary Tests for the --enable-native-access option
|
||||
* @modules jdk.jshell
|
||||
* @run testng ToolEnableNativeAccessTest
|
||||
*/
|
||||
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
public class ToolEnableNativeAccessTest extends ReplToolTesting {
|
||||
|
||||
@Test
|
||||
public void testOptionDebug() {
|
||||
test(
|
||||
(a) -> assertCommand(a, "/debug b",
|
||||
"RemoteVM Options: []\n"
|
||||
+ "Compiler options: []"),
|
||||
(a) -> assertCommand(a, "/env --enable-native-access",
|
||||
"| Setting new options and restoring state."),
|
||||
(a) -> assertCommandCheckOutput(a, "/debug b", s -> {
|
||||
assertTrue(s.contains("RemoteVM Options: [--enable-native-access, ALL-UNNAMED]"));
|
||||
assertTrue(s.contains("Compiler options: []"));
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCommandLineFlag() {
|
||||
test(new String[] {"--enable-native-access"},
|
||||
(a) -> assertCommandCheckOutput(a, "/debug b", s -> {
|
||||
assertTrue(s.contains("RemoteVM Options: [--enable-native-access, ALL-UNNAMED]"));
|
||||
assertTrue(s.contains("Compiler options: []"));
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user