1 /*
2  * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 
24 /*
25  * @test
26  * @bug 8180375 8185251 8210408
27  * @summary Tests resource bundles are correctly loaded from modules through
28  *          "<packageName>.spi.<simpleName>Provider" types.
29  * @library /test/lib
30  *          ..
31  * @build jdk.test.lib.JDKToolLauncher
32  *        jdk.test.lib.Utils
33  *        jdk.test.lib.compiler.CompilerUtils
34  *        jdk.test.lib.process.ProcessTools
35  *        ModuleTestUtil
36  * @run main LayerTest
37  */
38 
39 import java.nio.file.Path;
40 import java.nio.file.Paths;
41 import java.util.List;
42 
43 import jdk.test.lib.JDKToolLauncher;
44 import jdk.test.lib.Utils;
45 import jdk.test.lib.process.ProcessTools;
46 
47 public class LayerTest {
48     private static final Path SRC_DIR = Paths.get(Utils.TEST_SRC, "src");
49     private static final Path MODS_DIR = Paths.get(Utils.TEST_CLASSES, "mods");
50     private static final List<String> MODULE_LIST = List.of("m1", "m2");
51 
main(String[] args)52     public static void main(String[] args) throws Throwable {
53         MODULE_LIST.forEach(mn -> ModuleTestUtil.prepareModule(SRC_DIR,
54                 MODS_DIR, mn, ".properties"));
55         compileCmd();
56         runCmd();
57     }
58 
compileCmd()59     private static void compileCmd() throws Throwable {
60         JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("javac");
61         launcher.addToolArg("-d")
62                 .addToolArg(Utils.TEST_CLASSES)
63                 .addToolArg(SRC_DIR.resolve("Main.java").toString());
64 
65         int exitCode = ProcessTools.executeCommand(launcher.getCommand())
66                                    .getExitValue();
67         if (exitCode != 0) {
68             throw new RuntimeException("Compile of the test failed. "
69                     + "Unexpected exit code: " + exitCode);
70         }
71     }
72 
runCmd()73     private static void runCmd() throws Throwable {
74         JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("java");
75         launcher.addToolArg("-cp")
76                 .addToolArg(Utils.TEST_CLASSES)
77                 .addToolArg("Main")
78                 .addToolArg(Utils.TEST_CLASSES);
79 
80         int exitCode = ProcessTools.executeCommand(launcher.getCommand())
81                                    .getExitValue();
82         if (exitCode != 0) {
83             throw new RuntimeException("Execution of the test failed. "
84                     + "Unexpected exit code: " + exitCode);
85         }
86     }
87 }