RFR: 8332161: Test restoring echo in the Console implementation (java.base) [v9]

Pavel Rappo prappo at openjdk.org
Thu Jun 6 20:57:14 UTC 2024


On Thu, 6 Jun 2024 17:08:50 GMT, Naoto Sato <naoto at openjdk.org> wrote:

>> test/jdk/java/io/Console/restoreEcho.exp line 57:
>> 
>>> 55: test "$rpprompt" "$rpinput" "-echo" "$rpexpected"
>>> 56: # See if the initialEcho is restored with `stty -a`
>>> 57: expect " $initialEcho "
>> 
>> If you leave out those whitespace characters inside the quotes and `$initialEcho` expands to `-echo`, it will be treated as an option to `expect`, right? If so, consider this instead:
>> 
>>     expect -- $initialEcho
>> 
>> But more importantly: could a test match `echo` in `-echo` and therefore falsely pass?
>
> The spaces before/after `$initialEcho` are exactly to distinguish "echo" from "-echo", otherwise the test falsely succeeds as you pointed out. Although the test works as expected as it is, adding `--` would be safer.

It's clever. However, we now depend on `(-)echo` being in the middle of the line, no? If `stty -a` format (IEEE Std 1003.2) allows `(-)echo` to appear in an arbitrary position of a line, our check won't work.

If `(-)echo` appears in a leading position, it might be preceded by a TAB (similarly to `-echoprt` below). If `(-)echo` appears in a trailing position, it is followed by newline (similarly to `echoctl` below).


lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl$
^I-echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo$
^I-extproc$


But I guess, it's good enough and certainly much better than the initially proposed unit test.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/19315#discussion_r1630230512


More information about the core-libs-dev mailing list