RFR: 8319938: com/sun/java/swing/plaf/gtk/TestFileChooserSingleDirectorySelection.java fails with "getSelectedFiles returned empty array for LAF: javax.swing.plaf.metal.MetalLookAndFeel" [v3]

Abhishek Kumar abhiscxk at openjdk.org
Tue Dec 5 12:18:02 UTC 2023


On Mon, 4 Dec 2023 21:00:58 GMT, Alexey Ivanov <aivanov at openjdk.org> wrote:

>> Abhishek Kumar has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Test update
>
> test/jdk/com/sun/java/swing/plaf/gtk/TestFileChooserSingleDirectorySelection.java line 1:
> 
>> 1: /*
> 
> Since GitHub doesn't allow adding comments to lines which aren't modified:
> 
> In `doTesting`, you should get the location and dimensions of the frame on EDT (and for the button too).
> 
> The `passed` field is to be declared `volatile`: you modify it on EDT in the button listener but you read its value on main thread.
> 
> Basically, you don't need the button, you can run the code in the button action listener directly. Be sure to run it on EDT though.
> 
> The listener code can be modified to perform only one volatile write:
> 
> 
>             public void actionPerformed(ActionEvent evt) {
>                 File files[] = fileChooser.getSelectedFiles();
>                 passed = files.length != 0;
>             }

`Button` and `passed` field are removed since it may not be required. The selected files are fetched in `checkResult` method.

> test/jdk/com/sun/java/swing/plaf/gtk/TestFileChooserSingleDirectorySelection.java line 26:
> 
>> 24: /*
>> 25:  * @test
>> 26:  * @bug 6972078 8319938
> 
> It's a test bug, no code in JDK is changed as the result — the bugid shouldn't be added.

Updated.

> test/jdk/com/sun/java/swing/plaf/gtk/TestFileChooserSingleDirectorySelection.java line 57:
> 
>> 55:     private static File testFile;
>> 56:     private static File[] SubDirs;
>> 57:     private static File[] subFiles;
> 
> You don't use these arrays, they could be local variables; but even there they're not needed — a local variable for a current file or directory is enough.

Updated.

> test/jdk/com/sun/java/swing/plaf/gtk/TestFileChooserSingleDirectorySelection.java line 66:
> 
>> 64:         createFilesOnlyDir();
>> 65:         populateDirs();
>> 66:         populateFiles();
> 
> Returning and passing the `File` object would make code flow clearer:
> Suggestion:
> 
>         testDir = createFoldersOnlyDir();
>         populateDirs(testDir);
>         testFile = createFilesOnlyDir();
>         populateFiles(testFile);
> 
> 
> I still find `testFile` confusing because it represents a directory. What about `testDirDirs`, `testDirFiles`?

Updated the var names.

> test/jdk/com/sun/java/swing/plaf/gtk/TestFileChooserSingleDirectorySelection.java line 93:
> 
>> 91:             SubDirs[i].mkdir();
>> 92:             SubDirs[i].deleteOnExit();
>> 93:         }
> 
> The array is redundant:
> Suggestion:
> 
>         for (int i = 0; i < 10; ++i) {
>             File subDir = new File(testDir, "subDir_" + (i+1));
>             subDir.mkdir();
>             subDir.deleteOnExit();
>         }

Updated.

> test/jdk/com/sun/java/swing/plaf/gtk/TestFileChooserSingleDirectorySelection.java line 111:
> 
>> 109:                     ".txt", new File(testFile.getAbsolutePath()));
>> 110:             subFiles[i].deleteOnExit();
>> 111:         }
> 
> The array is redundant. I also suggest following the same pattern for creating files:
> Suggestion:
> 
>         for (int i = 0; i < 10; ++i) {
>             File subFile = new File(testFile, "subFiles_" + (i+1));
>             subFile.createNewFile();
>             subFile.deleteOnExit();
>         }

Updated.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16674#discussion_r1415506579
PR Review Comment: https://git.openjdk.org/jdk/pull/16674#discussion_r1415500444
PR Review Comment: https://git.openjdk.org/jdk/pull/16674#discussion_r1415500684
PR Review Comment: https://git.openjdk.org/jdk/pull/16674#discussion_r1415501849
PR Review Comment: https://git.openjdk.org/jdk/pull/16674#discussion_r1415502104
PR Review Comment: https://git.openjdk.org/jdk/pull/16674#discussion_r1415502358


More information about the client-libs-dev mailing list