jtreg adds additional backslashes in Strings that are written to System.out/err?

Jonathan Gibbons jonathan.gibbons at oracle.com
Wed Sep 15 14:52:58 UTC 2021


The FAQ already covers this to some extent:

https://openjdk.java.net/jtreg/faq.html#how-do-i-view-what-a-test-sends-to-system.out-or-system.err

I'll still consider adding more info.

-- Jon


On 9/15/21 7:35 AM, Jonathan Gibbons wrote:
> 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.
>
> -- Jon
>
>
> 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:<section-name>
>>                          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.
>>
>> -Pavel
>>


More information about the jtreg-use mailing list