Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Improve tests for str to Fraction conversion #134010

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

Merged
merged 1 commit into from
May 14, 2025

Conversation

serhiy-storchaka
Copy link
Member

No description provided.

self.assertEqual((3, 2), _components(F("3/2")))
self.assertEqual((3, 2), _components(F("3 / 2")))
self.assertEqual((3, 2), _components(F(" \n +3/2")))
self.assertEqual((-3, 2), _components(F("-3/2 ")))
self.assertEqual((13, 2), _components(F(" 013/02 \n ")))
self.assertEqual((13, 2), _components(F(" 0013/002 \n ")))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why this was replaced, not added?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is virtually the same test, but tests that more than one zero is accepted. There were no tests for leading zero in other forms, so they were added.

Comment on lines +425 to +427
def check_invalid(s):
msg = "Invalid literal for Fraction: " + repr(s)
self.assertRaisesMessage(ValueError, msg, F, s)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks fine.

But maybe use subTest?

for value in ["3/", "/2",  # there can be a lot of...
              # Denominators don't need a sign.
              "3/+2", "3/-2",
              # Imitate float's parsing.
              ...]:
    with self.subTest(value=value):
        check_invalid(value)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The main reason is that if we make error messages more specific, it is easier to add an optional parameter, while keeping default for most tests. For example, I originally planned to add the tests here that are currently in test_limit_int.

@skirpichev skirpichev self-requested a review May 14, 2025 16:59
@serhiy-storchaka serhiy-storchaka merged commit 17d0fec into python:main May 14, 2025
50 checks passed
@miss-islington-app
Copy link

Thanks @serhiy-storchaka for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13, 3.14.
🐍🍒⛏🤖 I'm not a witch! I'm not a witch!

@serhiy-storchaka serhiy-storchaka deleted the testFromString branch May 14, 2025 17:16
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 14, 2025
(cherry picked from commit 17d0fec)

Co-authored-by: Serhiy Storchaka <[email protected]>
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 14, 2025
(cherry picked from commit 17d0fec)

Co-authored-by: Serhiy Storchaka <[email protected]>
@bedevere-app
Copy link

bedevere-app bot commented May 14, 2025

GH-134016 is a backport of this pull request to the 3.14 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.14 bugs and security fixes label May 14, 2025
@bedevere-app
Copy link

bedevere-app bot commented May 14, 2025

GH-134017 is a backport of this pull request to the 3.13 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.13 bugs and security fixes label May 14, 2025
serhiy-storchaka added a commit that referenced this pull request May 14, 2025
serhiy-storchaka added a commit that referenced this pull request May 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
skip issue skip news tests Tests in the Lib/test dir
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants