-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8366400: JCK test api/java_text/DecimalFormat/Parse.html fails after JDK-8363972 #27014
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8366400: JCK test api/java_text/DecimalFormat/Parse.html fails after JDK-8363972 #27014
Conversation
|
👋 Welcome back jlu! A progress list of the required criteria for merging this PR into |
|
@justin-curtis-lu This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be: You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 52 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
|
@justin-curtis-lu The following labels will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing lists. If you would like to change these labels, use the /label pull request command. |
Webrevs
|
|
Would it be possible to review the DecimalFormat tests in the jdk repo? I'm wondering if the changes for lenient parsing in JDK-8363972 should have had more tests (it's good that tests elsewhere found the issue but it does suggest that we don't have enough tests in the jdk repo). |
| @Test // Non-localized, only run once | ||
| @EnabledIfSystemProperty(named = "user.language", matches = "en") | ||
| public void invalidPositionParseTest() { | ||
| // -1 index should fail properly. Ensure SIOOBE not thrown during | ||
| // affix matching when position may be less than 0 | ||
| assertNull(assertDoesNotThrow(() -> new DecimalFormat().parse("1", new ParsePosition(-1)))); | ||
| } | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for writing the invalid case test. As Alan suggested, maybe we could provide more edge case tests.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added some additional tests with a focus on affix matching, specifically ensuring SIOOBE does not leak out in any of those cases. i.e. The bounds checks should ensure false is returned for those cases. But specifically for the failing JCK test, the main test we need on the JDK repo side is a negative ParsePosition index test.
naotoj
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Moving position tests unrelated to lenient minus parsing to here is good.
| // Parsing text which contains un-parseable data, but the index | ||
| // begins at the valid portion. Ensure PP is properly updated. | ||
| @Test | ||
| public void modifiedPositionTest() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
JUnit5 tests default to package-private visibility, but I think aligning with other tests is more important.
|
Thanks for expanding the coverage of the existing tests. That will help catch any regressions when changing the parsing code in the future. |
|
/integrate |
|
Going to push as commit becc35f.
Your commit was automatically rebased without conflicts. |
|
@justin-curtis-lu Pushed as commit becc35f. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
This PR addresses a JCK test failure of an unexpected SIOOBE during DecimalFormat parsing. During the char by char comparison in
matchAffix, the minimum of the length of the parsed String and the PP index + affix length are iterated on. The parse position index needs to be checked to not be negative to ensure that we do not index the String below 0. Taking the minimum of those two previously mentioned values already guarantees that we do not index the String above the length.Progress
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/27014/head:pull/27014$ git checkout pull/27014Update a local copy of the PR:
$ git checkout pull/27014$ git pull https://git.openjdk.org/jdk.git pull/27014/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 27014View PR using the GUI difftool:
$ git pr show -t 27014Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/27014.diff
Using Webrev
Link to Webrev Comment