Recently codecov stopped uploading my C code coverage on a Python C extension I have written.
In this job, tox is using codecov==2.1.1, and the upload succeeds.
In this job, tox is using codecov==2.1.3 and I see the following error:
==> Detecting CI provider
-> Got branch from git/hg
-> Got sha from git/hg
==> Preparing upload
==> Processing gcov (disable by -X gcov)
Executing gcov (gcov -pb .../zoneinfo/.tox/gcov/coverage/build/temp.linux-x86_64-3.8/lib/zoneinfo_module.gcno)
Error running `gcov -pb .../zoneinfo/.tox/gcov/coverage/build/temp.linux-x86_64-3.8/lib/zoneinfo_module.gcno`:
[Errno 2] No such file or directory: 'gcov -pb .../zoneinfo/.tox/gcov/coverage/build/temp.linux-x86_64-3.8/lib/zoneinfo_module.gcno'
Error: 'NoneType' object has no attribute 'replace'
(I've modified this slightly to make it a bit easier to read by shortening some paths and breaking up one extra long line).
Unfortunately I don't have time to create a minimal reproducer, but if you clone the zoneinfo repository and run tox -e gcov, that should generate the coverage files, and I'm using scripts/upload_codecov.py to upload the coverage files — it is just a script that finds the XML file output that gcovr emits, and passes that to codecov -f.
I'm guessing #167 is the culprit.