bug-dejagnu
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Chris Nospam
Subject: bug#75440: dejagnu does not like java.io.Console of OpenJDK >= 22
Date: Wed, 8 Jan 2025 16:44:55 +0000

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

Attachment: simple.zip
Description: Zip compressed data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]