On Tue, 18 Mar 2025 18:37:09 GMT, Manukumar V S <[email protected]> wrote:
>> **Issue**
>> java/awt/Desktop/MailTest.java fails in platforms where Action.MAIL is not
>> supported
>>
>> **Reason**
>> In `MailTest.java`, there is a condition check(`if
>> (!desktop.isSupported(Desktop.Action.MAIL))`) which will force pass the test
>> if the corresponding 'Action' is not supported by the platform. But,
>> apparently, this is not working good and the code flow went past this and
>> fails in desktop.mail() method with an UnsupportedOperationException.
>>
>> **Fix**
>> Even though we are calling `PassFailJFrame.forcePass()` if the 'Action.MAIL'
>> is unsupported, the PassFailJFrame just count downs a latch and the actual
>> action will be taken later only(in `awaitAndCheck()`). But at the meantime,
>> the desktop.mail() call gets executed in the constructor of MailTest() and
>> it will result in an UnsupportedOperationException. So, the fix is to return
>> from the constructor immediately if the operation is 'unsupported'.
>>
>> **Testing**
>> This is a manual test, so it is tested locally and found to be working fine.
>
> Manukumar V S has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Review comments fixed : Added SkippedException instead of forcePass(),
> Changed the position of imports, formatting changes
Marked as reviewed by aivanov (Reviewer).
test/jdk/java/awt/Desktop/MailTest.java line 106:
> 104: if (!desktop.isSupported(Desktop.Action.MAIL)) {
> 105: String errorMessage = "Action.MAIL is not supported.";
> 106: throw new SkippedException(errorMessage);
Since the error message is used only once, you can inline the message to the
constructor.
You may inline `Desktop.getDesktop().isSupported(Desktop.Action.MAIL)` without
introducing a local variable if you like.
-------------
PR Review: https://git.openjdk.org/jdk/pull/24072#pullrequestreview-2696204855
PR Review Comment: https://git.openjdk.org/jdk/pull/24072#discussion_r2001964021