On Thu, 6 Mar 2025 13:34:07 GMT, Oleksii Sylichenko <d...@openjdk.org> wrote:
> This PR proposes three improvements to the `Basic.java` test: > > 1. Increase Timeout > - The current timeout is insufficient when running the test in IntelliJ > IDEA. > - I propose increasing it by one minute. > - The timeout value was last modified on May 13, 2010 (commit > [56131863a71c](https://github.com/openjdk/jdk/commit/56131863a71ca552d0a881364bd2b3581e13f058)) > and has remained unchanged since then. > > 2. Fix Incompatibility with Windows (Cygwin vs. Native) > - One of the tests executes the `echo` command. > - This works in Cygwin but fails when running the test in a pure Windows > environment (e.g., IntelliJ IDEA). > - I propose replacing echo with `cmd /c echo/`, which produces the same > output (a single newline) in Windows, ensuring compatibility. > > 3. Prevent Autorun Scripts in the `cmd /c set` Command > - The test runs `cmd /c set`, but in Windows, this may trigger autorun > scripts. > - I propose adding the `/d` options to prevent autorun scripts from > affecting the test results. > > These changes improve test reliability and ensure compatibility across > different environments. > Testing: > - Verified that the test runs successfully in IntelliJ IDEA without timeout > issues. > - Confirmed that `cmd /c echo/` produces the expected output in Windows. > - Ensured that `cmd /d /c set` correctly lists environment variables without > executing autorun scripts. > > # Detailed Description > > ## echo > The following test fails in a clean Windows environment (e.g., when run from > IntelliJ IDEA without Cygwin): > > //---------------------------------------------------------------- > // Test Runtime.exec(...envp...) with envstrings without any `=' > //---------------------------------------------------------------- > > with following error: > > Cannot run program "echo": CreateProcess error=2, The system cannot find the > file specified > > > If we try to run `echo` as a process in Windows, for example from IntelliJ > IDEA, we get the error above, because Windows does not have such an > executable, but instead this is a command of the Command Processor (CMD). > > The `echo.` command with the `.` works the same way as calling `echo` without > parameters in Unix — it outputs an empty line. Was implemented using the > analogous `echo/` command to avoid compatibility issues. > > See: > https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/echo > > To ensure that the `echo/` command is supported in Cygwin, we need to invoke > it via `cmd /c`, because Cygwin has its own executable "echo". > > ## cmd.e... This pull request has now been integrated. Changeset: 6bcbc3b0 Author: Oleksii Sylichenko <a.siliche...@gmail.com> Committer: Roger Riggs <rri...@openjdk.org> URL: https://git.openjdk.org/jdk/commit/6bcbc3b0a21687504b07a0a405d824a448aea872 Stats: 8 lines in 1 file changed: 2 ins; 1 del; 5 mod 8353489: Increase timeout and improve Windows compatibility in test/jdk/java/lang/ProcessBuilder/Basic.java Reviewed-by: rriggs ------------- PR: https://git.openjdk.org/jdk/pull/23933