< prev index next >

test/jdk/tools/launcher/ArgsEnvVar.java

Print this page

        

@@ -35,10 +35,12 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.regex.Pattern;
+import java.nio.file.Paths;
+import java.nio.file.Path;
 
 public class ArgsEnvVar extends TestHelper {
     private static File testJar = null;
     private static Map<String, String> env = new HashMap<>();
 

@@ -151,10 +153,11 @@
     public void noTerminalOpt() throws IOException {
         List<List<String>> terminal_opts = List.of(
                 List.of("-jar", "test.jar"),
                 List.of("-m", "test/Foo"),
                 List.of("--module", "test/Foo"),
+                List.of("--module=test/Foo"),
                 List.of("--dry-run"),
                 List.of("-h"),
                 List.of("-?"),
                 List.of("-help"),
                 List.of("--help"),

@@ -239,10 +242,73 @@
         env.put(JDK_JAVA_OPTIONS, "  --add-exports java.base/jdk.internal.misc=ALL-UNNAMED ");
         tr = doExec(env, javaCmd, "-jar", "test.jar");
         verifyOptions(List.of("--add-exports", "java.base/jdk.internal.misc=ALL-UNNAMED", "-jar", "test.jar"), tr);
     }
 
+
+    @Test
+    // That that we can correctly handle the module longform argument option
+    // when supplied in an argument file
+    public void modulesInArgsFile() throws IOException {
+        File cwd = new File(".");
+        File testModuleDir = new File(cwd, "modules_test");
+
+        createEchoArgumentsModule(testModuleDir);
+
+        Path SRC_DIR = Paths.get(testModuleDir.getAbsolutePath(), "src");
+        Path MODS_DIR = Paths.get(testModuleDir.getAbsolutePath(), "mods");
+
+        // test module / main class
+        String MODULE_OPTION = "--module=test/launcher.Main";
+        String TEST_MODULE = "test";
+
+        // javac -d mods/test src/test/**
+        TestResult tr = doExec(
+            javacCmd,
+            "-d", MODS_DIR.toString(),
+            "--module-source-path", SRC_DIR.toString(),
+            "--module", TEST_MODULE);
+
+        if (!tr.isOK()) {
+            System.out.println("test did not compile");
+            throw new RuntimeException("Error: modules test did not compile");
+        }
+
+        // verify the terminating ability of --module= through environment variables
+        File argFile = createArgFile("cmdargs", List.of("--module-path", MODS_DIR.toString(), MODULE_OPTION, "--hello"));
+        env.put(JDK_JAVA_OPTIONS, "@cmdargs");
+        tr = doExec(env, javaCmd);
+        tr.checkNegative();
+        tr.contains("Error: Option " + MODULE_OPTION + " in @cmdargs is not allowed in environment variable JDK_JAVA_OPTIONS");
+        if (!tr.testStatus) {
+            System.out.println(tr);
+            throw new RuntimeException("test fails");
+        }
+
+        // check that specifying --module and --module-path with file works
+        tr = doExec(javaCmd, "-Dfile.encoding=UTF-8", "\"@cmdargs\"");
+        tr.contains("[--hello]");
+        if (!tr.testStatus) {
+            System.out.println(tr);
+            throw new RuntimeException("test fails");
+        }
+
+        // check with reversed --module-path and --module in the arguments file, this will fail, --module= is terminating
+        File argFile1 = createArgFile("cmdargs1", List.of(MODULE_OPTION, "--module-path", MODS_DIR.toString(), "--hello"));
+        tr = doExec(javaCmd, "-Dfile.encoding=UTF-8", "\"@cmdargs1\"");
+        tr.checkNegative();
+        if (!tr.testStatus) {
+            System.out.println(tr);
+            throw new RuntimeException("test fails");
+        }
+
+        // clean-up
+        argFile.delete();
+        argFile1.delete();
+        recursiveDelete(testModuleDir);
+    }
+
     public static void main(String... args) throws Exception {
         init();
         ArgsEnvVar a = new ArgsEnvVar();
         a.run(args);
         if (testExitValue > 0) {
< prev index next >