Skip to content

Commit

Permalink
8268725: jshell does not support the --enable-native-access option
Browse files Browse the repository at this point in the history
Reviewed-by: sundar
  • Loading branch information
lahodaj committed Nov 23, 2021
1 parent 7b67a49 commit 8a44e09
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 0 deletions.
Expand Up @@ -274,6 +274,7 @@ private enum OptionKind {
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;
Expand Down Expand Up @@ -363,6 +364,7 @@ private class OptionParserBase {
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();
Expand Down Expand Up @@ -471,6 +473,10 @@ Options parse(OptionSet options) {
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;
Expand Down
Expand Up @@ -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\
Expand Down
63 changes: 63 additions & 0 deletions test/langtools/jdk/jshell/ToolEnableNativeAccessTest.java
@@ -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: []"));
})
);
}

}

1 comment on commit 8a44e09

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.