RFR: 8330998: System.console() writes to stderr when stdout is redirected [v2]
Jan Lahoda
jlahoda at openjdk.org
Mon Apr 29 14:56:23 UTC 2024
> Consider code like:
>
> public class ConsoleTest {
> public static void main(String... args) {
> System.console().printf("Hello!");
> }
> }
>
>
> When run as:
>
> $ java ConsoleTest.java >/dev/null
>
>
> it prints `Hello!` to stderr, instead of to stdout (where it would be redirected).
>
> The proposed fix is to simply force the use of stdout. Sadly, this cannot be done solely using JLine configuration, we actually need to change the JLine's code for that.
>
> The most tricky part is a test. There are two sub-tests, one effectively testing a case where all of stdin/out/err are redirected, the other is attempting to test the case where stdin is attached to a terminal, while stdout is redirected. The second sub-test using a native functions to create a pty and to attach to it, and should run in a separate VM, as it leaves the VM attached to the terminal.
Jan Lahoda has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains six additional commits since the last revision:
- Merge branch 'master' into JDK-8330998
- Fixing test.
- Attempting to stabilize the test.
- Improving test to really test the redirect while stdin is connected to a terminal.
- Fixing typo.
- 8330998: System.console() writes to stderr when stdout is redirected
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/18996/files
- new: https://git.openjdk.org/jdk/pull/18996/files/9090e4c7..8a918e3f
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=18996&range=01
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=18996&range=00-01
Stats: 22740 lines in 1516 files changed: 8365 ins; 10464 del; 3911 mod
Patch: https://git.openjdk.org/jdk/pull/18996.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/18996/head:pull/18996
PR: https://git.openjdk.org/jdk/pull/18996
More information about the core-libs-dev
mailing list