Skip to content

coverage combine can fail complaining about missing files #1605

@ssbarnea

Description

@ssbarnea

Describe the bug
(WIP):
coverage==7.2.3

To Reproduce
How can we reproduce the problem? Please be specific. Don't link to a failing CI job. Answer the questions below:

  1. What version of Python are you using?: 3.11
  2. What version of coverage.py shows the problem? The output of coverage debug sys is helpful.
  3. What versions of what packages do you have installed? The output of pip freeze is helpful.
  4. What code shows the problem? Give us a specific commit of a specific repo that we can check out. If you've already worked around the problem, please provide a commit before that fix.
  5. What commands did you run?
py: commands[2]> sh -c 'coverage combine -a -q --data-file=.coverage .tox/.coverage.*'
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Couldn't use data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.35703.363167-journal': file is not a database
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Couldn't use data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.46376.762932-journal': file is not a database
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.46844.059134' doesn't seem to be a coverage data file: 
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.47064.452252' doesn't seem to be a coverage data file: 
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.47341.075353' doesn't seem to be a coverage data file: 
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Couldn't use data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.48144.272428-journal': file is not a database
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Couldn't use data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.48380.995178-journal': file is not a database
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Couldn't use data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.54852.820997-journal': file is not a database
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.55378.251736' doesn't seem to be a coverage data file: 
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Couldn't use data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.56278.178380-journal': file is not a database
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Couldn't use data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.56447.276199-journal': file is not a database
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.59807.597105' doesn't seem to be a coverage data file: 
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.73574.478229' doesn't seem to be a coverage data file: 
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Couldn't use data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.76121.299390-journal': file is not a database
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Couldn't use data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.76270.743970-journal': file is not a database
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Couldn't use data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.76283.235127-journal': file is not a database
  data._warn(str(exc))
/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py:166: CoverageWarning: Couldn't use data file '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.76588.477104-journal': file is not a database
  data._warn(str(exc))
Traceback (most recent call last):
  File "/Users/ssbarnea/c/a/ansible-lint/.tox/py/bin/coverage", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/cmdline.py", line 974, in main
    status = CoverageScript().command_line(argv)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/cmdline.py", line 690, in command_line
    self.coverage.combine(data_paths, strict=True, keep=bool(options.keep))
  File "/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/control.py", line 807, in combine
    combine_parallel_data(
  File "/Users/ssbarnea/c/a/ansible-lint/.tox/py/lib/python3.11/site-packages/coverage/data.py", line 148, in combine_parallel_data
    with open(f, "rb") as fobj:
         ^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/Users/ssbarnea/c/a/ansible-lint/.tox/.coverage.py.m1.77285.627909-journal'
py: exit 1 (7.07 seconds) /Users/ssbarnea/c/a/ansible-lint> sh -c 'coverage combine -a -q --data-file=.coverage .tox/.coverage.*' pid=15473

Expected behavior
No failure.

Additional context

Based on my tests, its seems that some .coverage...-journal leftover files from incomplete coverage runs can cause this failures.

In order to improve the UX, I would recommend changing coverage behavior to ignore these leftover files or even to remove them if found. In my particular case I added an extra rm step to my tox file. WDYT?

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingfixed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions