From: Pavel Tisnovsky <ptisnovs@redhat.com>
To: Dr Andrew John Hughes <ahughes@redhat.com>
Cc: mauve-discuss@sourceware.org
Subject: Re: Fix for test gnu/testlet/java/lang/Integer/parseInt.java
Date: Thu, 18 Aug 2011 08:12:00 -0000 [thread overview]
Message-ID: <4E4CC9DA.1030704@redhat.com> (raw)
In-Reply-To: <20110817162659.GB9583@rivendell.middle-earth.co.uk>
Dr Andrew John Hughes wrote:
> On 18:20 Wed 17 Aug , Pavel Tisnovsky wrote:
>> Greetings,
>>
>> I think that the regression test "gnu/testlet/java/lang/Integer/parseInt.java"
>> should be fixed to work correctly for pre JDK1.7 case (JDK1.0 .. JDK1.6) and
>> also for JDK1.7 case. The difference between JDK1.6 and JDK1.7 is in the
>> behaviour of method Integer.parseInt() when string beginning with '+' sign is
>> parsed:
>>
>> Integer.parseInt("+42")
>>
>> JDK1.6 throws exception in this case, but parsing the same string is perfectly
>> valid in JDK1.7. So I added the condition to the test which checks what JDK is
>> being tested (I can't figure out how Mauve harness checks the "Tags: JDKxx"
>> tag). I also changed the message printed in case JDK1.7 does not work correctly.
>>
>> Is it possible to push the fixed test to Mauve repository please?
>>
>> Thank you in advance,
>> Pavel
>
> Such tests are dubious because they assume compliance to one particular version,
> which has never been true of GNU Classpath and can't be verified due to the lack
> of a Free Software TCK. There will also be versions of OpenJDK7 that report
> as "1.7" but don't yet have this change.
Hi Andrew,
you are right that we have not FS TCK so the precise JRE behaviour is
questionable, but I think that any JDK/JRE which identifies itself as "1.6"
should conforms to "Java Platform, Standard Edition 6 API Specification", at
least from common developers point of view.
> Have you tested this with GNU Classpath? I'm pretty sure it will break the
> test there as it has the modern behaviour, but most GNU Classpath VMs tend
> to report earlier versions due to the level of bytecode they support.
Yeah, that's true because I've tried it using gij:
$ gij -version
java version "1.5.0"
gij (GNU libgcj) version 4.6.0 20110603 (Red Hat 4.6.0-10)
Its interesting because it is identified itself as "1.5.0" and parse the string
"+10" without problems.
> As the old behaviour is specific to versions of Sun/Oracle's JDK implementation,
> it should check that this implementation is being used as well, rather than just
> the version.
Ok, I'll look into it, thank you for review!
>
>> --- gnu/testlet/java/lang/Integer/parseInt.java 2008-05-12 23:35:49.000000000 +0200
>> +++ gnu/testlet/java/lang/Integer/parseInt.java 2011-08-17 17:17:16.000000000 +0200
>> @@ -106,15 +106,31 @@
>> }
>>
>> // In JDK1.7, '+' is considered a valid character.
>> - try
>> - {
>> - i = Integer.parseInt("+10");
>> - harness.check(true);
>> - harness.check(i, 10);
>> - }
>> - catch (NumberFormatException nfe)
>> - {
>> - harness.fail("Leading '+' does not throw NumberFormatException");
>> + // it means that the following step should be divided
>> + // for pre JDK1.7 case and >= JDK1.7
>> + String[] javaVersion = System.getProperty("java.version").split("\\.");
>> + if (Integer.parseInt(javaVersion[1]) >= 7) {
>> + try
>> + {
>> + i = Integer.parseInt("+10");
>> + harness.check(true);
>> + harness.check(i, 10);
>> + }
>> + catch (NumberFormatException nfe)
>> + {
>> + harness.fail("'+10' string is not parsed correctly as expected in JDK1.7");
>> + }
>> + }
>> + else { // pre JDK1.7 branch
>> + try
>> + {
>> + i = Integer.parseInt("+10");
>> + harness.fail("'+10' must throw NumberFormatException");
>> + }
>> + catch (NumberFormatException nfe)
>> + {
>> + harness.check(true);
>> + }
>> }
>>
>> try
>
>
next prev parent reply other threads:[~2011-08-18 8:12 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-17 16:19 Pavel Tisnovsky
2011-08-17 16:27 ` Dr Andrew John Hughes
2011-08-18 8:12 ` Pavel Tisnovsky [this message]
2011-08-18 15:50 ` Dr Andrew John Hughes
2011-08-18 12:41 ` Pavel Tisnovsky
2011-08-18 15:46 ` Dr Andrew John Hughes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E4CC9DA.1030704@redhat.com \
--to=ptisnovs@redhat.com \
--cc=ahughes@redhat.com \
--cc=mauve-discuss@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).