On Thu, 23 Nov 2023 11:53:00 GMT, Abhishek Kumar <[email protected]> wrote:
>>> But the files gets deselected after selection which returns as no file
>>> selected and test failed.
>>
>> How is it? It sounds like magic… The working directory shouldn't matter; if
>> it does, the test isn't as stable as it should be.
>
> Surprise to me also. It failed every single time when temporary files are
> created in `scratch`.
>
>>The test isn't as stable as it should be.
>
> Unable to trace what is missing in the test.
It took a long while for me to figure it out. What matters is whether the
`File` object is created with an absolute path or not. By using
`System.getProperty("java.io.tmpdir")` as the base path, you create an absolute
path for the parent directory.
Yet if you use pass `null` as the first parameter (as I said, there's no system
property named ".", so `tmpDir` is `null`) or use the constructor with one
parameter `new File("testDir")`, the file has relative path. This causes some
issues…
When you create `JFileChooser` object, you *always* pass `testDir` as its
starting directory. Then, for each case, you set it once again. Here's what I
see in a `PropertyChangeListener`:
>> setCurrentDirectory
directoryChanged: /home/aivanov/jdk-dev/testDir/testDir -> testDir
<< setCurrentDirectory
SelectedFileChangedProperty: /home/aivanov/jdk-dev/testDir/subDir_3 -> null
SelectedFilesChangedProperty: [Ljava.io.File;@3fed803b -> null
directoryChanged: testDir -> /home/aivanov/jdk-dev/testDir
SelectedFileChangedProperty: null -> null
SelectedFilesChangedProperty: null -> [Ljava.io.File;@1bf88ed6
This is why see a directory gets selected but then becomes unselected again.
Getting the absolute file — `testDir = new File("testDir").getAbsoluteFile()` —
resolves this problem, and the test starts to work in the current directory. I
tested it by running with jtreg, then the current directory is the `scratch`
directory, and as a stand-alone app, in this case the current directory is
whatever the current directory is.
So either way works as long as the starting `File` object is created with _an
absolute path_.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16674#discussion_r1414467819