Skip to content

Support .coveragerc.toml for configuration #1952

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

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

OlenaYefymenko
Copy link

This patch provides a new configuration — .coveragerc.toml . Considering that many projects have switched to toml configurations, this change offers a more flexible approach to manage coverage settings.

Resolves #1643

This patch provides a new configuration option for coverage.py.
Considering that many projects have switched to toml configurations,
this change offers a more flexible approach to manage coverage settings.
Comment on lines +574 to 575
(".coveragerc.toml", True, False),
("setup.cfg", False, False),
Copy link
Author

Choose a reason for hiding this comment

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

Is the priority of the new config properly determined in the config_files_to_try function?

Copy link
Owner

Choose a reason for hiding this comment

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

Looks good.

Comment on lines +67 to +70
@pytest.mark.parametrize("filename", ["pyproject.toml", ".coveragerc.toml"])
def test_toml_config_file(self, filename) -> None:
# A pyproject.toml and coveragerc.toml will be read into the configuration.
self.make_file(filename, """\
Copy link
Author

Choose a reason for hiding this comment

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

Is the parameterization implemented appropriately, similar to pyproject.toml?

Copy link
Owner

Choose a reason for hiding this comment

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

yes.

Comment on lines +836 to +837
def test_coveragerc_toml_priority(self) -> None:
"""Test that .coveragerc.toml has priority over pyproject.toml."""
Copy link
Author

Choose a reason for hiding this comment

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

Is testing priority only over pyproject.toml in the test_coveragerc_toml_priority test sufficient?

Copy link
Owner

Choose a reason for hiding this comment

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

yes.

@OlenaYefymenko
Copy link
Author

@nedbat,
I've opened PR with the improvements, but I have a few doubts about my implementation. I've added comments in the code. I'd really appreciate your feedback on whether this approach works well.
Thank you!

@nedbat nedbat changed the title 🌐 Support .coveragerc.toml for configuration Support .coveragerc.toml for configuration Apr 16, 2025
Copy link
Owner

@nedbat nedbat left a comment

Choose a reason for hiding this comment

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

One change needed.

Comment on lines +574 to 575
(".coveragerc.toml", True, False),
("setup.cfg", False, False),
Copy link
Owner

Choose a reason for hiding this comment

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

Looks good.

Comment on lines +67 to +70
@pytest.mark.parametrize("filename", ["pyproject.toml", ".coveragerc.toml"])
def test_toml_config_file(self, filename) -> None:
# A pyproject.toml and coveragerc.toml will be read into the configuration.
self.make_file(filename, """\
Copy link
Owner

Choose a reason for hiding this comment

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

yes.

Comment on lines +836 to +837
def test_coveragerc_toml_priority(self) -> None:
"""Test that .coveragerc.toml has priority over pyproject.toml."""
Copy link
Owner

Choose a reason for hiding this comment

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

yes.

# A toml file!
[tool.coverage]
run.parallel = true
""")
with mock.patch.object(coverage.tomlconfig, "has_tomllib", False):
msg = "Can't read 'pyproject.toml' without TOML support"
msg = "Can't read '{filename}' without TOML support"
Copy link
Owner

Choose a reason for hiding this comment

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

Looks like tests are failing because this needs to be an f-string.

Copy link
Author

Choose a reason for hiding this comment

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

Thank you. I will fix this error in the next commits. I run tox with version 3.12 locally, and I didn't see this error.

@nedbat
Copy link
Owner

nedbat commented Apr 16, 2025

Thanks for doing this. There are some other changes needed. Let me know which you want to do, and which I should do:

  • Update the documentation
  • Add an entry to CHANGES.rst
  • Add your name to CONTRIBUTORS.txt

@OlenaYefymenko
Copy link
Author

OlenaYefymenko commented Apr 17, 2025

Thanks for doing this. There are some other changes needed. Let me know which you want to do, and which I should do:

  • Update the documentation
  • Add an entry to CHANGES.rst
  • Add your name to CONTRIBUTORS.txt

Yes, I will add the changes

Co-authored-by: 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FR] Tool-specific toml config
3 participants