Hey,
Following the recent security issue with the bash uploader, I wanted to switch to using the node package instead of fetching+executing the bash script like before.
And I was surprised that the result in codecov is notably different.
In our project we’re using jest with these options for the coverage system:
This looks pretty standard to me. As a result Jest generates 3 files:
- clover.xml
- coverage-final.json
- lcov.info
- lcov-report/ (directory)
That’s where I noticed a difference, when looking at the CI log:
- the bash script uploads all 3
clover.xml
coverage-final.json
lcov.info
- the node script seems to upload only
lcov.info
andclover.xml
Could that make a difference ? It’s not clear to me what different informations all these files are, until then I supposed they were containing the same information really.
Some more information:
- here is the PR switching to this node module: https://github.com/firefox-devtools/profiler/pull/3281
- This is the codecov report for this switch: Codecov (I believe this is available without being logged in)
Codecov’s UI doesn’t make it any easier to analyze…
For example, see this file: Codecov
+10% as coverage, but the 2 lines that are shown are red as “not covered”; they were already not covered previously.
But when looking closer:
we see that 2 lines (42 and 43) were previously shown as “uncovered” and now they are just blank.
Another example is: Codecov. Again the UI is quite bad… let’s look at the files directly:
We clearly see a lot of the case disjunctions in the JSX code are missing in the new coverage.
I believe the “previous” information is correct in these 2 cases but haven’t looked at every cases.
All that to say that the behavior is different. Which might be OK I guess I mostly need some guidance from you experts on how to get the same behavior as with the bash script. Happy to help with more data if needed!
Thanks!