bug#75440: dejagnu does not like java.io.Console of OpenJDK >= 22

Chris Nospam via Bug-dejagnu via <[email protected]> Wed, 8 Jan 2025 16:44:55 +0000
Newsgroups gmane.comp.sysutils.dejagnu.bugs
Message-ID <trinity-883ac4d3-67e0-4d8c-b926-1fcc387c6cf0-1736354694938@trinity-msg-rest-gmx-gmx-live-bbc95d94c-jjgc7>
--refeik-260945c3-c1e3-4e45-9036-350984ec99a0
Content-Type: text/plain; charset=UTF-8

Dear maintainers,

starting with OpenJDK Java 22 java programs using java.io.Console cannot be testet with dejagnu any more. With JDK 21 it works like a charm.
I belive it has to do with excape sequences that are not filtered out correctly or similar. I am using dejagnu 1.6.3-1, debain package under Ubuntu 24.04.

For an easy reproduction of the bug I have attached a simple example simple.zip. Just unpack it and execute exectest.sh. Be sure to update JAVA_HOME in this script to a jdk 22 or 23 installation.

In testsuite/simple.log some escape sequences are shown were no one are expected:
^[[?1h^[=^[[?2004hhello
^[[?1l^[>^[[?1000l^[[?2004lhello

The attached simple echo example works after simply commenting the lines 13-14 (using Console) and uncommenting lines 16-17 (using BufferedReader) in testsuite/simple.sh.
Alternatively it also works by passing -Djdk.console=java.base to the jvm (1st line in exectest.sh), to trigger the old implementation in JDK.

#!/usr/bin/env -S java --source 23
// #!/usr/local/java/jdk-23.0.1/bin/java --source 23 -Djdk.console=java.base

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ConsoleTest {

    public static void main(String[] args) throws IOException {
        System.out.print("prompt> ");

        java.io.Console c = System.console();
        String input = c.readLine();

        // BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        // String input = in.readLine();

        System.out.println(input);
        System.out.println("prompt> ");
    }

}

It has something to do with the change of the Java default Console provider to JLine in Java 22.
https://bugs.openjdk.org/browse/JDK-8309141
However, as Java Console works everywhere else (windows/linux console/bash/EclipseIDE internal "console"/IntelliJ internal "console") as far I can see, it seems to be something special with dejagnu.

Thanks for dejagnu, maintaining it, and your help,
Chris

--refeik-260945c3-c1e3-4e45-9036-350984ec99a0
Content-Type: application/x-zip-compressed
Content-Disposition: attachment; filename=simple.zip
Content-Transfer-Encoding: base64
X-UI-Content-Hash: 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
AA==
--refeik-260945c3-c1e3-4e45-9036-350984ec99a0
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQnVnLWRlamFn
bnUgbWFpbGluZyBsaXN0CkJ1Zy1kZWphZ251QGdudS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3Jn
L21haWxtYW4vbGlzdGluZm8vYnVnLWRlamFnbnUK

--refeik-260945c3-c1e3-4e45-9036-350984ec99a0--