jtreg adds additional backslashes in Strings that are written to System.out/err?
jonathan.gibbons at oracle.com
Wed Sep 15 14:35:44 UTC 2021
Separate from fixing/improving jtreg -show:<name> option and its
command-line help (CODETOOLS-7903024), given the recent interest in this
issue, I'll add info to the FAQ.
On 9/15/21 6:15 AM, Pavel Rappo wrote:
> David Holmes pointed me to this thread after I started a discussion elsewhere. Coincidentally, I stumbled upon the described jtreg behavior myself yesterday. It took me a while to figure out what was happening. When I described my finding to a colleague, Jonathan Gibbons, he suggested that if required I could read `.jtr` files using a (lesser-known?) option called `show`. This option's description is buried in help output and is not particularly clear: (Care to file a bug to improve that? File a JBS issue against Project=CODETOOLS and Subcomponent=jtreg.)
> $ jtreg --help General Options | grep -A 3 'show:<sec'
> Show information from a section in the results file for a
> test. For example, -show:rerun
> -showGroups Show the expansion (to files and directories) of the groups
> As far as I understand, when run with this option, jtreg does not run your test. Instead, it reads the specified section from the existing `.jtr` file and outputs the same way it would otherwise appear on the console: no escapes. You can specify System.out or System.err as such a section.
> Now, here are some details. JTHarness, which is used by jtreg, encodes special symbols it encounters in standard streams. While CR, LR and TAB are output as they are, \ is output as \\ and the rest of the escape sequences are output using the \uxxxx notation. The code I saw suggests that it is not a bug and is done on purpose. Anyhow, this is how output is stored in `.jtr` files. My understanding is that jtreg knows about that and recovers original output from `.jtr` files on demand.
More information about the jtreg-use