[rfc] make test ignored or valid only for specific JDK
Jonathan Gibbons
jonathan.gibbons at oracle.com
Sat Apr 11 01:26:05 UTC 2015
Jiri,
How about a variant of 0, which is to define a new property, perhaps
called "jdk.version.major" or something like that, which is defined to
be a simple integer, for easy use with the existing comparison
mechanism. That leaves open the use for jdk.version to be a more
detailed string, with potentially the possibility of doing version
comparisons later on, if that should prove necessary.
-- Jon
On 04/10/2015 03:11 AM, Jiri Vanek wrote:
> On 04/09/2015 05:30 PM, Jonathan Gibbons wrote:
>> The current behavior of the jdk.version has been to return 1.major
>> for existing releases, with the
>> proposal to go to something beginning with 9 for JDK 9 onwards.
>>
>
> 0. Yes. Thats definitely the right thing to do.
>
> So why not to "just keep backward compatibility for jdk5-8" ? If
> returned version would match 1.{5,6,7,8}.X consider it as 5,6,7 or 8?
>
> The touch in code will be minimalist, we will be in safe integers,
>
>> I don't think it is right to renumber releases in hindsight.
>> jdk.version should stay "reasonably
>> close" to the beginning of the string obtained from "java -version".
>>
>> So that means we have the following possibilities:
>> 1. only allow one dot, and treat these numbers as floating point.
>> That's pretty hacky.
>
> I like this:) But yes.. it is hacky :( And you will still need handle
> other possible dots after first (eg removal of all no digit chars?)
>
> Although it may be pretty powerfull at the end, it may be confusing
> even misleading
> (eg 1.7.a5 will suddenly be lower hiogher then 1.7.b4 and many similar
> and much less visible)
>
>> 2. introduce "version types" into the @requires expression engine,
>> and make the relation operators
>> polymorphic
>
>
> Well this may be pretty cool, and will solve the issue with jtregs
> testing features like nimbus (mentioned somewhere in this thread..)
>
>
> So long story short. I vote for *0* for it simplicity. But if you
> think 2 is worthy of effort then why not . But design will need much
> more thinking then I originally hoped to sacrifice. But I think it is
> not worthy.
>
>
> Also I guess I can not have final word as you are an guru here. So
> whatever you suppose is good, I can start to work on it.
>
> Thanx!
>
> J.
>>
>> -- Jon
>>
>> On 04/09/2015 12:53 AM, Jiri Vanek wrote:
>>> ping?
>>>
>>> If the most simple way is the way to go, then - as your initial impl
>>> is based on jdk9, so it
>>> expect one number on each side, then simple extending for backward
>>> ocmpatibility to change
>>> 1.{8,7,6,5}.whatever to simple number should be right thing to do an
>>> easy way to go.
>>>
>>> Any more granular thoughts may come in later.
>>>
>>> Can I proceed with this patch?
>>>
>>>
>>> Thank you,
>>> J.
>>>
>>> On 04/02/2015 01:12 PM, Jiri Vanek wrote:
>>>> One more hint.
>>>>
>>>> When I originally read
>>>>
>>>> > 4. @requires. This is a relatively new feature. You can put a
>>>> declarative tag in a test
>>>> description
>>>> > of the form "@requires expr" where there is a variety of
>>>> terminals, of which jdk.version is but
>>>> > one. So you could add a line like
>>>> > @requires jdk.version <=1.6 || jdk.version >1.7 ||
>>>> jdk.version = "1.4.2"
>>>> > Not as compact as your proposal, but it exists today.
>>>>
>>>> It seemed to me that full version sort is included.
>>>>
>>>> so eg 1.4.2 < 1.8 < 9 < 9.2
>>>> but also 1.7.0_20 < 1.7.0_40
>>>>
>>>>
>>>> Also my original impression from jep was, that backward
>>>> compatibility returnnig 1.9.0_X will be
>>>> preserved.
>>>>
>>>> Currently I do not need this, but my colleague mentioned cases
>>>> where it can be useful.
>>>> Eg nimbus was introduced in uSomething. So any tests to nimbus
>>>> would have @requires >=
>>>> 1.7.0_Something (instead of programmed failback "if no nimbus then
>>>> exit 0" :)
>>>>
>>>> Maybe it is really not needed, but when such an nice feature
>>>> started to exists, it would be nice to
>>>> have it as capable as possible.
>>>>
>>>> J.
>>>>
>>>> On 04/02/2015 11:19 AM, Jiri Vanek wrote:
>>>>> On 04/01/2015 08:32 PM, Jonathan Gibbons wrote:
>>>>>>
>>>>>> On 04/01/2015 10:34 AM, Jiri Vanek wrote:
>>>>>>>>
>>>>>>>> * @requires jdk.version <= 7
>>>>>>>> leads to
>>>>>>>> test result: Error. Error evaluating expression: invalid
>>>>>>>> numeric value: 1.8
>>>>>>>>
>>>>>>>> Is it expected bahviour? I tried also with various
>>>>>>>> spaces/nospace....
>>>>>>>>
>>>>>>>>
>>>>>>> ping? Is it expected? If not, I will provide you a fix.
>>>>>>>
>>>>>>> J.
>>>>>>
>>>>>> With hindsight, I can see that this is to be expected, which is
>>>>>> not to say that it is good.
>>>>>>
>>>>>> Going forward, I'm not sure what the correct fix will be,
>>>>>> especially given the upcoming JEP for
>>>>>> semantic versioning.
>>>>>> http://openjdk.java.net/jeps/223
>>>>>
>>>>> Yes, I'm aware of this jep.
>>>>>>
>>>>>> Before you provide a fix, I'd be interested to hear suggestions
>>>>>> on what the fix should be. One
>>>>>> solution is that we should just allow numbers to be represented
>>>>>> as Double as well as Long. A
>>>>>> different solution would be to introduce a "version" type somehow.
>>>>>
>>>>> When I saw the behavior, And realized that jep 233 was target, I
>>>>> was thinking that
>>>>> >>> * @requires jdk.version <= 7
>>>>> >>> leads to
>>>>> >>> test result: Error. Error evaluating expression: invalid
>>>>> numeric value: 1.8
>>>>>
>>>>> Is correct way to do. And so, if this Error is hit, try to remove
>>>>> leading 1. and strip all behind
>>>>> next dot including that dot.
>>>>>
>>>>> For jdk9+ single number is expected.
>>>>>
>>>>> Otherwise the qeustion is a bit different. What is expected from
>>>>> "jdk.version" Only mayor number
>>>>> like 1.4.2, 1.7.0, 1.8.0, 9, 10, or more detailed version?
>>>>>
>>>>> I would vote for that simple approach, but probably only because
>>>>> it suits my needs now.
>>>>> Cases like 1.4.2 in past 1.4.0 may be expected... But still, non
>>>>> of those should causes compilation
>>>>> incompatibility.
>>>>>
>>>>>
>>>>> Thank you very much for cooperation!
>>>>> J.
>>>>
>>>>
>>>
>>
>
More information about the jtreg-dev
mailing list