RFR: JDK-8192816 Let run-test save exit code

Martin Buchholz martinrb at google.com
Fri Dec 1 03:36:54 UTC 2017


Yeah, tr is a stupid little utility that it would be nice to get away from.

It's possible that env LC_ALL=C tr will fix your ASCII character set
problem.

On Thu, Nov 30, 2017 at 1:45 PM, Tim Bell <tim.bell at oracle.com> wrote:

> Magnus:
>
> Looks good.
>
> On well-behaving unix systems, tr -c '[a-z]' '_' would
>>
>>> take the complement of a-z and replace it by underscore. But on
>>>> solaris, -c [a-z] would evaluate to a (not clearly defined) massive
>>>> string of all characters except a-z in the current locale.
>>>>
>>>
> I wish we could get away from using tr due to sometimes surprising
> behavior depending on locale, but that is a separate project.
>
> Tim
>
>
>
> On 11/30/17 09:20, Erik Joelsson wrote:
>
>> Looks good.
>>
>> /
>>
>>
>> On 2017-11-30 06:09, Magnus Ihse Bursie wrote:
>>
>>> To support all the use cases of the old test/Makefile way of running
>>> tests, we need to save the exit code from running tests.
>>>
>>> This patch also includes three other bug fixes:
>>> * Saving the test ID:s of the latest run in test-last-ids.txt, so we
>>> can programmatically discover which new tests were run.
>>> * Test roots were not normalized for jtreg tests given only by group
>>> (e.g. ":tier1")
>>> * Fix for solaris version of tr.
>>>
>>> The last one was actually quite interesting, and took a while to
>>> figure out. On well-behaving unix systems, tr -c '[a-z]' '_' would
>>> take the complement of a-z and replace it by underscore. But on
>>> solaris, -c [a-z] would evaluate to a (not clearly defined) massive
>>> string of all characters except a-z in the current locale. And then,
>>> if the second string ('_') is *shorter* than the first, the behavior
>>> of tr is *undefinied* (which, in practice, means that it doesn't do
>>> anything). Like, "wtf?!? how could this possibly work for anyone?".
>>> The workaround, after much hair-pulling, turned out to be a notation
>>> to repeat a single character ('[_*1000]'), hoping that the character
>>> set never exceeds 1000. *sigh*
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8192816
>>> WebRev:
>>> http://cr.openjdk.java.net/~ihse/JDK-8192816-let-run-test-sa
>>> ve-exit-code/webrev.01
>>>
>>>
>>> /Magnus
>>>
>>>
>>
>



More information about the build-dev mailing list