RFR: JDK-8183372 : Refactor java/lang/Class shell tests to java [v3]

Mandy Chung mchung at openjdk.java.net
Tue Jan 26 22:46:46 UTC 2021


On Mon, 25 Jan 2021 20:51:06 GMT, Mahendra Chhipa <github.com+34924738+mahendrachhipa at openjdk.org> wrote:

>> https://bugs.openjdk.java.net/browse/JDK-8183372
>
> Mahendra Chhipa has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Implemented the review comments.

test/jdk/java/lang/Class/forName/NonJavaNames.java line 37:

> 35:  * @bug 4952558
> 36:  * @library /test/lib
> 37:  * @build NonJavaNames

This `@build` can be dropped as this is done implicitly.

test/jdk/java/lang/Class/forName/NonJavaNames.java line 63:

> 61:     private static final String TEST_SRC = SRC_DIR + "/classes/";
> 62:     private static final String TEST_CLASSES = System.getProperty("test.classes", ".");
> 63:     Path dhyphenPath, dcommaPath, dperiodPath, dleftsquarePath, drightsquarePath, dplusPath, dsemicolonPath, dzeroPath, dthreePath, dzadePath;

These variables should belong to the `createInvalidNameClasses` method.  You can simply add `Path` type declaration in line 78-87.

test/jdk/java/lang/Class/getEnclosingClass/EnclosingClassTest.java line 90:

> 88:         Path enclosingPath = Paths.get(ENCLOSING_CLASS_SRC);
> 89:         Path pkg1Dir = Paths.get(SRC_DIR + "/pkg1");
> 90:         Path pkg2Dir = Paths.get(SRC_DIR+"/pkg1/pkg2");

nit: space before and after `+` is missing

test/jdk/java/lang/Class/getEnclosingClass/EnclosingClassTest.java line 89:

> 87:     public void createEnclosingClasses() throws Throwable {
> 88:         Path enclosingPath = Paths.get(ENCLOSING_CLASS_SRC);
> 89:         Path pkg1Dir = Paths.get(SRC_DIR + "/pkg1");

Alternatively:

    Path pkg1Dir = Paths.get(SRC_DIR, pkg1);
    Path pkg2Dir = Paths.get(SRC_DIR, pkg1, pkg2);
    Path pkg1File = pkg1Dir.resolve("EnclosingClass.java");
    Path pkg2File = pkg2Dir.resolve("EnclosingClass.java");

test/jdk/java/lang/Class/getEnclosingClass/EnclosingClassTest.java line 84:

> 82: public class EnclosingClassTest {
> 83:     private static final String SRC_DIR = System.getProperty("test.src");
> 84:     private static final String ENCLOSING_CLASS_SRC = SRC_DIR + "/EnclosingClass.java";

Suggestion:

    private static final Path ENCLOSING_CLASS_SRC = Paths.get(SRC_DIR, "EnclosingClass.java");

Use Path::toString to convert to a String where needed.

test/jdk/java/lang/Class/getEnclosingClass/EnclosingClassTest.java line 103:

> 101:         String javacPath = JDKToolFinder.getJDKTool("javac");
> 102:         OutputAnalyzer outputAnalyzer = ProcessTools.executeCommand(javacPath, "-d", System.getProperty("test.classes", "."),
> 103:                 SRC_DIR + "/EnclosingClass.java", SRC_DIR + "/pkg1/EnclosingClass.java", SRC_DIR + "/pkg1/pkg2/EnclosingClass.java");

`File.separator` is different on Unix and Windows.   Either replace `/` with `File.separator`.   Or you can use `java.nio.file.Path` and call `Path::toString` to get the string representation.

See above suggestion of declaring `static final Path ENCLOSING_CLASS_SRC`.  So the above should use `ENCLOSING_CLASS_SRC` and `pkg2File` instead (calling toString)

test/jdk/java/lang/Class/getEnclosingClass/EnclosingClassTest.java line 108:

> 106: 
> 107:     @Test
> 108:     public void testEnclosingClasses() throws Throwable {

better to throw specific exceptions for example `ReflectiveOperationException`.  Same for the `@Test` below.

test/jdk/java/lang/Class/getEnclosingClass/EnclosingClassTest.java line 124:

> 122:     @AfterClass
> 123:     public void deleteEnclosingClasses() throws IOException {
> 124:         Path pkg1Dir = Paths.get(SRC_DIR + "/pkg1");

Suggestion:

        Path pkg1Dir = Paths.get(SRC_DIR, "pkg1");

-------------

PR: https://git.openjdk.java.net/jdk/pull/2170


More information about the core-libs-dev mailing list