Paper cut: Better handling of "CoverageException: Can't add arcs to existing line data" ? · Issue #803 · nedbat/coveragepy (original) (raw)
Is your feature request related to a problem? Please describe.
Previous closed issue, with comments: #476
Reproduction: In the process of adding coverage to an existing project's test suite, I first ran it without branch coverage, and then again after enabling branch coverage in .coveragerc
, resulting in "CoverageException: Can't add arcs to existing line data".
I'm familiar enough with coverage to have guessed that it's a data file format problem, and deleted the .coverage
file to fix it, but this won't be obvious to new or inexperienced users, and it probably represents a significant usability hurdle / paper cut bug (especially since it's most likely to occur when first adding coverage to a project in this way)
Describe the solution you'd like
One or more of:
- A more descriptive and actionable error message: at least, something that would lead new / inexperienced users to clearing the coverage database, for example.
- More generally, a mechanism to recognise when the coverage database format is not compatible with a coverage run's invocation options, so that this kind of case can be handled better in general?
Additional context
This is the relevant traceback (with coverage 4.5.3, invoked via nosetests --with-coverage
):
Traceback (most recent call last): […] File "…/site-packages/coverage/control.py", line 807, in combine self.get_data() File "…/site-packages/coverage/control.py", line 833, in get_data if self.collector.save_data(self.data): File "…/site-packages/coverage/collector.py", line 404, in save_data covdata.add_arcs(abs_file_dict(self.data)) File "…/site-packages/coverage/data.py", line 365, in add_arcs raise CoverageException("Can't add arcs to existing line data") coverage.misc.CoverageException: Can't add arcs to existing line data