test/jdk/java/util/ResourceBundle/Control/MissingResourceCauseTestRun.java
author dzhou
Thu, 06 Dec 2018 18:46:08 -0800
changeset 52889 4ac336352a29
child 55680 cd48f8f260c8
permissions -rw-r--r--
8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests Reviewed-by: naoto
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
52889
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
     1
/*
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
     2
 * Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
     4
 *
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
     7
 * published by the Free Software Foundation.
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
     8
 *
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    13
 * accompanied this code).
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    14
 *
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    18
 *
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    21
 * questions.
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    22
 */
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    23
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    24
/*
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    25
 * @test
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    26
 * @bug 4354216 8213127
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    27
 * @summary Test for the cause support when throwing a
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    28
 *          MissingResourceBundle. (This test exists under
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    29
 *          ResourceBundle/Control because bad resource bundle data can be
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    30
 *          shared with other test cases.)
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    31
 * @library /test/lib
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    32
 * @build jdk.test.lib.JDKToolLauncher
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    33
 *        jdk.test.lib.Utils
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    34
 *        jdk.test.lib.process.ProcessTools
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    35
 *        MissingResourceCauseTest
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    36
 *        NonResourceBundle
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    37
 *        PrivateConstructorRB
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    38
 *        AbstractRB
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    39
 *        BadStaticInitRB
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    40
 *        NoNoArgConstructorRB
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    41
 * @run main MissingResourceCauseTestRun
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    42
 */
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    43
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    44
import java.io.File;
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    45
import java.io.FileWriter;
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    46
import java.nio.file.Files;
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    47
import java.nio.file.Path;
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    48
import java.nio.file.Paths;
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    49
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    50
import jdk.test.lib.JDKToolLauncher;
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    51
import jdk.test.lib.Utils;
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    52
import jdk.test.lib.process.ProcessTools;
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    53
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    54
public class MissingResourceCauseTestRun {
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    55
    public static void main(String[] args) throws Throwable {
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    56
        Path path = Paths.get("UnreadableRB.properties");
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    57
        Files.deleteIfExists(path);
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    58
        try {
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    59
            writeFile(path);
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    60
            runCmd();
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    61
        } finally {
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    62
            deleteFile(path);
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    63
        }
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    64
    }
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    65
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    66
    /**
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    67
     * Create an unreadable properties file
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    68
     */
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    69
    private static void writeFile(Path path) throws Throwable {
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    70
        String str = "type=unreadable";
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    71
        Files.createFile(path);
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    72
        try (FileWriter fw = new FileWriter(path.toString())) {
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    73
            fw.write(str);
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    74
        }
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    75
        ProcessTools.executeCommand("chmod", "000", path.toString())
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    76
                .outputTo(System.out)
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    77
                .errorTo(System.out)
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    78
                .shouldHaveExitValue(0);
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    79
    }
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    80
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    81
    private static void runCmd() throws Throwable {
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    82
        // Class files are in Utils.TEST_CLASSES
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    83
        // MalformedDataRB_en.properties is in Utils.TEST_SRC
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    84
        // UnreadableRB.properties is in current directory
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    85
        String cp = Utils.TEST_CLASSES + File.pathSeparator + Utils.TEST_SRC
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    86
                + File.pathSeparator + ".";
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    87
        JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("java");
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    88
        launcher.addToolArg("-esa")
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    89
                .addToolArg("-cp")
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    90
                .addToolArg(cp)
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    91
                .addToolArg("MissingResourceCauseTest");
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    92
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    93
        int exitCode = ProcessTools.executeCommand(launcher.getCommand())
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    94
                .getExitValue();
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    95
        if (exitCode != 0) {
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    96
            throw new RuntimeException("Execution of the test failed. "
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    97
                    + "Unexpected exit code: " + exitCode);
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    98
        }
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
    99
    }
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
   100
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
   101
    private static void deleteFile(Path path) throws Throwable {
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
   102
        if(path.toFile().exists()) {
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
   103
            ProcessTools.executeCommand("chmod", "666", path.toString())
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
   104
                        .outputTo(System.out)
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
   105
                        .errorTo(System.out)
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
   106
                        .shouldHaveExitValue(0);
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
   107
            Files.delete(path);
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
   108
        }
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
   109
    }
4ac336352a29 8213127: Refactor test/java/util/ResourceBundle/Control/MissingResourceCauseTest.sh to plain java tests
dzhou
parents:
diff changeset
   110
}