I wonder if it’s possible to use codecov with the node’s new test runner: Test runner | Node.js v20.7.0 Documentation
I’ve tried following:
nyc --reporter=lcov node --test --experimental-test-coverage
— but nyc doesn’t seem to pick anything.
Running just node --test --experimental-test-coverage
works locally, though.
Here is the full yml script I’m trying to make work: https://github.com/Elringus/DotNetJS/blob/feat/revamp/.github/workflows/cover.yml (tests are here: https://github.com/Elringus/DotNetJS/tree/feat/revamp/JavaScript ).
tom
September 26, 2023, 5:42am
2
@Elringus this sounds like an issue with nyc
versus Codecov. Can you send a link to a CI run?
It looks like node coverage tool produces the report in TAP version 13 format, eg:
TAP version 13
# Subtest: boot
# Subtest: throws when missing WASM boot resource
ok 1 - throws when missing WASM boot resource
---
duration_ms: 2.2801
...
# Subtest: throws when missing assembly boot resource
ok 2 - throws when missing assembly boot resource
---
duration_ms: 0.5002
...
— is it somehow possible to feed that to codecov directly? I’ve been trying find some kind of TAP → lcov/other format converters, but didn’t find any.
It’s also possible to specify custom test reporters (Test runner | Node.js v20.7.0 Documentation ), but, again, I wasn’t able to find something compatible with codecov.
I’ve switched to vitest and correct reports are now generated. But codecov still doesn’t see the JavaScript part of the repository.
Here is the CI run: revamp with .net 8 · Elringus/DotNetJS@56e6113 · GitHub
And here is the codecov page displaying only the C# part of the repository: Codecov
Judging by the CI log codecov has both JavaScript/coverage/clover.xml
and JavaScript/coverage/coverage-final.json
detected and uploaded. The reports contain all the related coverage data; eg, below is the contents of clover.xml:
Summary
<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1695755822490" clover="3.2.0">
<project timestamp="1695755822490" name="All files">
<metrics statements="283" coveredstatements="270" conditionals="1432" coveredconditionals="813" methods="1231" coveredmethods="472" elements="2946" coveredelements="1555" complexity="0" loc="283" ncloc="283" packages="1" files="12" classes="12"/>
<file name="bindings.g.mjs" path="C:\Users\Elringus\Documents\GitHub\Bootsharp\JavaScript\test\cs\Test\bin\bootsharp\bindings.g.mjs">
<metrics statements="44" coveredstatements="44" conditionals="40" coveredconditionals="35" methods="35" coveredmethods="32"/>
<line num="1" count="1" type="stmt"/>
<line num="2" count="1" type="stmt"/>
<line num="3" count="1" type="stmt"/>
<line num="4" count="19" type="cond" truecount="3" falsecount="0"/>
<line num="5" count="1" type="stmt"/>
<line num="6" count="1" type="stmt"/>
<line num="7" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="8" count="1" type="stmt"/>
<line num="9" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="10" count="1" type="cond" truecount="2" falsecount="0"/>
<line num="11" count="1" type="cond" truecount="2" falsecount="0"/>
<line num="12" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="13" count="1" type="cond" truecount="1" falsecount="1"/>
<line num="14" count="1" type="stmt"/>
<line num="15" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="16" count="1" type="cond" truecount="1" falsecount="1"/>
<line num="17" count="1" type="cond" truecount="2" falsecount="0"/>
<line num="18" count="1" type="stmt"/>
<line num="19" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="20" count="1" type="stmt"/>
<line num="21" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="22" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="23" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="24" count="1" type="stmt"/>
<line num="25" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="26" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="27" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="28" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="29" count="1" type="cond" truecount="1" falsecount="1"/>
<line num="30" count="1" type="cond" truecount="2" falsecount="0"/>
<line num="31" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="32" count="1" type="stmt"/>
<line num="33" count="1" type="cond" truecount="1" falsecount="1"/>
<line num="34" count="1" type="cond" truecount="2" falsecount="0"/>
<line num="35" count="1" type="stmt"/>
<line num="36" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="37" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="38" count="1" type="cond" truecount="1" falsecount="1"/>
<line num="39" count="1" type="cond" truecount="2" falsecount="0"/>
<line num="40" count="1" type="stmt"/>
<line num="41" count="1" type="stmt"/>
<line num="42" count="1" type="stmt"/>
<line num="43" count="1" type="stmt"/>
<line num="44" count="1" type="stmt"/>
</file>
<file name="boot.mjs" path="C:\Users\Elringus\Documents\GitHub\Bootsharp\JavaScript\test\cs\Test\bin\bootsharp\boot.mjs">
<metrics statements="24" coveredstatements="21" conditionals="15" coveredconditionals="11" methods="2" coveredmethods="1"/>
<line num="1" count="1" type="stmt"/>
<line num="2" count="1" type="stmt"/>
<line num="3" count="1" type="stmt"/>
<line num="4" count="1" type="stmt"/>
<line num="5" count="1" type="stmt"/>
<line num="6" count="1" type="stmt"/>
<line num="7" count="1" type="stmt"/>
<line num="8" count="1" type="stmt"/>
<line num="9" count="6" type="cond" truecount="1" falsecount="0"/>
<line num="10" count="6" type="cond" truecount="1" falsecount="0"/>
<line num="11" count="6" type="cond" truecount="2" falsecount="1"/>
<line num="12" count="6" type="cond" truecount="2" falsecount="1"/>
<line num="13" count="6" type="cond" truecount="2" falsecount="1"/>
<line num="14" count="6" type="cond" truecount="2" falsecount="1"/>
<line num="15" count="4" type="cond" truecount="1" falsecount="0"/>
<line num="16" count="4" type="stmt"/>
<line num="17" count="1" type="stmt"/>
<line num="18" count="1" type="stmt"/>
<line num="19" count="1" type="stmt"/>
<line num="20" count="0" type="stmt"/>
<line num="21" count="0" type="stmt"/>
<line num="22" count="0" type="stmt"/>
<line num="23" count="1" type="stmt"/>
<line num="24" count="1" type="stmt"/>
</file>
<file name="bootsharp.mjs" path="C:\Users\Elringus\Documents\GitHub\Bootsharp\JavaScript\test\cs\Test\bin\bootsharp\bootsharp.mjs">
<metrics statements="9" coveredstatements="9" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
<line num="1" count="1" type="stmt"/>
<line num="2" count="1" type="stmt"/>
<line num="3" count="1" type="stmt"/>
<line num="4" count="1" type="stmt"/>
<line num="5" count="1" type="stmt"/>
<line num="6" count="1" type="stmt"/>
<line num="7" count="1" type="stmt"/>
<line num="8" count="1" type="stmt"/>
<line num="9" count="1" type="stmt"/>
</file>
<file name="dotnet.mjs" path="C:\Users\Elringus\Documents\GitHub\Bootsharp\JavaScript\test\cs\Test\bin\bootsharp\dotnet.mjs">
<metrics statements="5" coveredstatements="5" conditionals="188" coveredconditionals="72" methods="89" coveredmethods="35"/>
<line num="1" count="1" type="stmt"/>
<line num="2" count="1" type="stmt"/>
<line num="3" count="1" type="cond" truecount="72" falsecount="116"/>
<line num="4" count="1" type="stmt"/>
<line num="5" count="1" type="stmt"/>
</file>
<file name="dotnet.native.mjs" path="C:\Users\Elringus\Documents\GitHub\Bootsharp\JavaScript\test\cs\Test\bin\bootsharp\dotnet.native.mjs">
<metrics statements="17" coveredstatements="17" conditionals="375" coveredconditionals="242" methods="529" coveredmethods="163"/>
<line num="1" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="2" count="5" type="stmt"/>
<line num="3" count="5" type="stmt"/>
<line num="4" count="5" type="stmt"/>
<line num="5" count="3" type="cond" truecount="1" falsecount="0"/>
<line num="6" count="3" type="stmt"/>
<line num="7" count="3" type="cond" truecount="240" falsecount="133"/>
<line num="8" count="3" type="stmt"/>
<line num="9" count="3" type="stmt"/>
<line num="10" count="3" type="stmt"/>
<line num="11" count="3" type="stmt"/>
<line num="12" count="5" type="stmt"/>
<line num="13" count="5" type="stmt"/>
<line num="14" count="1" type="stmt"/>
<line num="15" count="1" type="stmt"/>
<line num="16" count="1" type="stmt"/>
<line num="17" count="1" type="stmt"/>
</file>
<file name="dotnet.runtime.mjs" path="C:\Users\Elringus\Documents\GitHub\Bootsharp\JavaScript\test\cs\Test\bin\bootsharp\dotnet.runtime.mjs">
<metrics statements="5" coveredstatements="5" conditionals="774" coveredconditionals="415" methods="561" coveredmethods="226"/>
<line num="1" count="1" type="stmt"/>
<line num="2" count="1" type="stmt"/>
<line num="3" count="1" type="cond" truecount="415" falsecount="359"/>
<line num="4" count="1" type="stmt"/>
<line num="5" count="1" type="stmt"/>
</file>
<file name="event.mjs" path="C:\Users\Elringus\Documents\GitHub\Bootsharp\JavaScript\test\cs\Test\bin\bootsharp\event.mjs">
<metrics statements="69" coveredstatements="69" conditionals="23" coveredconditionals="23" methods="9" coveredmethods="9"/>
<line num="1" count="1" type="stmt"/>
<line num="2" count="27" type="cond" truecount="1" falsecount="0"/>
<line num="3" count="27" type="stmt"/>
<line num="4" count="27" type="stmt"/>
<line num="5" count="27" type="stmt"/>
<line num="6" count="27" type="stmt"/>
<line num="7" count="27" type="stmt"/>
<line num="8" count="27" type="cond" truecount="1" falsecount="0"/>
<line num="9" count="27" type="cond" truecount="1" falsecount="0"/>
<line num="10" count="27" type="cond" truecount="2" falsecount="0"/>
<line num="11" count="27" type="stmt"/>
<line num="12" count="27" type="stmt"/>
<line num="13" count="27" type="stmt"/>
<line num="14" count="27" type="cond" truecount="1" falsecount="0"/>
<line num="15" count="14" type="cond" truecount="2" falsecount="0"/>
<line num="16" count="14" type="stmt"/>
<line num="17" count="14" type="cond" truecount="1" falsecount="0"/>
<line num="18" count="14" type="stmt"/>
<line num="19" count="27" type="stmt"/>
<line num="20" count="27" type="stmt"/>
<line num="21" count="27" type="cond" truecount="1" falsecount="0"/>
<line num="22" count="19" type="stmt"/>
<line num="23" count="19" type="stmt"/>
<line num="24" count="19" type="stmt"/>
<line num="25" count="19" type="stmt"/>
<line num="26" count="27" type="stmt"/>
<line num="27" count="27" type="stmt"/>
<line num="28" count="27" type="cond" truecount="1" falsecount="0"/>
<line num="29" count="4" type="stmt"/>
<line num="30" count="4" type="cond" truecount="1" falsecount="0"/>
<line num="31" count="3" type="cond" truecount="1" falsecount="0"/>
<line num="32" count="3" type="stmt"/>
<line num="33" count="4" type="stmt"/>
<line num="34" count="27" type="stmt"/>
<line num="35" count="27" type="stmt"/>
<line num="36" count="27" type="stmt"/>
<line num="37" count="27" type="cond" truecount="1" falsecount="0"/>
<line num="38" count="29" type="stmt"/>
<line num="39" count="29" type="cond" truecount="1" falsecount="0"/>
<line num="40" count="19" type="cond" truecount="1" falsecount="0"/>
<line num="41" count="19" type="stmt"/>
<line num="42" count="29" type="stmt"/>
<line num="43" count="27" type="stmt"/>
<line num="44" count="27" type="stmt"/>
<line num="45" count="27" type="cond" truecount="1" falsecount="0"/>
<line num="46" count="4" type="stmt"/>
<line num="47" count="4" type="cond" truecount="1" falsecount="0"/>
<line num="48" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="49" count="1" type="stmt"/>
<line num="50" count="4" type="stmt"/>
<line num="51" count="27" type="stmt"/>
<line num="52" count="27" type="cond" truecount="1" falsecount="0"/>
<line num="53" count="3" type="stmt"/>
<line num="54" count="3" type="stmt"/>
<line num="55" count="27" type="cond" truecount="1" falsecount="0"/>
<line num="56" count="22" type="stmt"/>
<line num="57" count="22" type="stmt"/>
<line num="58" count="22" type="cond" truecount="1" falsecount="0"/>
<line num="59" count="9" type="cond" truecount="1" falsecount="0"/>
<line num="60" count="9" type="stmt"/>
<line num="61" count="9" type="stmt"/>
<line num="62" count="9" type="stmt"/>
<line num="63" count="9" type="stmt"/>
<line num="64" count="9" type="stmt"/>
<line num="65" count="9" type="stmt"/>
<line num="66" count="22" type="stmt"/>
<line num="67" count="27" type="stmt"/>
<line num="68" count="1" type="stmt"/>
<line num="69" count="1" type="stmt"/>
</file>
<file name="exports.mjs" path="C:\Users\Elringus\Documents\GitHub\Bootsharp\JavaScript\test\cs\Test\bin\bootsharp\exports.mjs">
<metrics statements="7" coveredstatements="7" conditionals="1" coveredconditionals="1" methods="1" coveredmethods="1"/>
<line num="1" count="1" type="stmt"/>
<line num="2" count="4" type="cond" truecount="1" falsecount="0"/>
<line num="3" count="4" type="stmt"/>
<line num="4" count="4" type="stmt"/>
<line num="5" count="4" type="stmt"/>
<line num="6" count="1" type="stmt"/>
<line num="7" count="1" type="stmt"/>
</file>
<file name="external.mjs" path="C:\Users\Elringus\Documents\GitHub\Bootsharp\JavaScript\test\cs\Test\bin\bootsharp\external.mjs">
<metrics statements="10" coveredstatements="10" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
<line num="1" count="1" type="stmt"/>
<line num="2" count="1" type="stmt"/>
<line num="3" count="1" type="stmt"/>
<line num="4" count="1" type="stmt"/>
<line num="5" count="1" type="stmt"/>
<line num="6" count="1" type="stmt"/>
<line num="7" count="1" type="stmt"/>
<line num="8" count="1" type="stmt"/>
<line num="9" count="1" type="stmt"/>
<line num="10" count="1" type="stmt"/>
</file>
<file name="imports.mjs" path="C:\Users\Elringus\Documents\GitHub\Bootsharp\JavaScript\test\cs\Test\bin\bootsharp\imports.mjs">
<metrics statements="7" coveredstatements="7" conditionals="1" coveredconditionals="1" methods="1" coveredmethods="1"/>
<line num="1" count="1" type="stmt"/>
<line num="2" count="1" type="stmt"/>
<line num="3" count="4" type="cond" truecount="1" falsecount="0"/>
<line num="4" count="4" type="stmt"/>
<line num="5" count="4" type="stmt"/>
<line num="6" count="1" type="stmt"/>
<line num="7" count="1" type="stmt"/>
</file>
<file name="resources.g.mjs" path="C:\Users\Elringus\Documents\GitHub\Bootsharp\JavaScript\test\cs\Test\bin\bootsharp\resources.g.mjs">
<metrics statements="23" coveredstatements="23" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0"/>
<line num="1" count="1" type="stmt"/>
<line num="2" count="1" type="stmt"/>
<line num="3" count="1" type="stmt"/>
<line num="4" count="1" type="stmt"/>
<line num="5" count="1" type="stmt"/>
<line num="6" count="1" type="stmt"/>
<line num="7" count="1" type="stmt"/>
<line num="8" count="1" type="stmt"/>
<line num="9" count="1" type="stmt"/>
<line num="10" count="1" type="stmt"/>
<line num="11" count="1" type="stmt"/>
<line num="12" count="1" type="stmt"/>
<line num="13" count="1" type="stmt"/>
<line num="14" count="1" type="stmt"/>
<line num="15" count="1" type="stmt"/>
<line num="16" count="1" type="stmt"/>
<line num="17" count="1" type="stmt"/>
<line num="18" count="1" type="stmt"/>
<line num="19" count="1" type="stmt"/>
<line num="20" count="1" type="stmt"/>
<line num="21" count="1" type="stmt"/>
<line num="22" count="1" type="stmt"/>
<line num="23" count="1" type="stmt"/>
</file>
<file name="resources.mjs" path="C:\Users\Elringus\Documents\GitHub\Bootsharp\JavaScript\test\cs\Test\bin\bootsharp\resources.mjs">
<metrics statements="63" coveredstatements="53" conditionals="15" coveredconditionals="13" methods="4" coveredmethods="4"/>
<line num="1" count="1" type="stmt"/>
<line num="2" count="1" type="stmt"/>
<line num="3" count="1" type="stmt"/>
<line num="4" count="1" type="stmt"/>
<line num="5" count="1" type="stmt"/>
<line num="6" count="1" type="stmt"/>
<line num="7" count="6" type="cond" truecount="1" falsecount="0"/>
<line num="8" count="6" type="stmt"/>
<line num="9" count="6" type="stmt"/>
<line num="10" count="6" type="stmt"/>
<line num="11" count="6" type="stmt"/>
<line num="12" count="6" type="stmt"/>
<line num="13" count="6" type="stmt"/>
<line num="14" count="6" type="stmt"/>
<line num="15" count="6" type="stmt"/>
<line num="16" count="6" type="stmt"/>
<line num="17" count="6" type="stmt"/>
<line num="18" count="6" type="stmt"/>
<line num="19" count="6" type="stmt"/>
<line num="20" count="6" type="stmt"/>
<line num="21" count="6" type="stmt"/>
<line num="22" count="6" type="stmt"/>
<line num="23" count="6" type="stmt"/>
<line num="24" count="6" type="stmt"/>
<line num="25" count="6" type="stmt"/>
<line num="26" count="6" type="stmt"/>
<line num="27" count="6" type="stmt"/>
<line num="28" count="6" type="stmt"/>
<line num="29" count="6" type="stmt"/>
<line num="30" count="6" type="stmt"/>
<line num="31" count="6" type="cond" truecount="1" falsecount="0"/>
<line num="32" count="6" type="stmt"/>
<line num="33" count="6" type="cond" truecount="1" falsecount="0"/>
<line num="34" count="5" type="cond" truecount="1" falsecount="0"/>
<line num="35" count="6" type="cond" truecount="1" falsecount="0"/>
<line num="36" count="61" type="cond" truecount="1" falsecount="0"/>
<line num="37" count="4" type="cond" truecount="1" falsecount="0"/>
<line num="38" count="60" type="cond" truecount="1" falsecount="0"/>
<line num="39" count="60" type="stmt"/>
<line num="40" count="60" type="stmt"/>
<line num="41" count="60" type="stmt"/>
<line num="42" count="60" type="stmt"/>
<line num="43" count="60" type="stmt"/>
<line num="44" count="60" type="stmt"/>
<line num="45" count="64" type="cond" truecount="1" falsecount="0"/>
<line num="46" count="64" type="stmt"/>
<line num="47" count="64" type="cond" truecount="1" falsecount="0"/>
<line num="48" count="16" type="cond" truecount="1" falsecount="0"/>
<line num="49" count="64" type="cond" truecount="1" falsecount="1"/>
<line num="50" count="16" type="cond" truecount="1" falsecount="0"/>
<line num="51" count="16" type="stmt"/>
<line num="52" count="0" type="cond" truecount="0" falsecount="1"/>
<line num="53" count="0" type="stmt"/>
<line num="54" count="0" type="stmt"/>
<line num="55" count="0" type="stmt"/>
<line num="56" count="0" type="stmt"/>
<line num="57" count="0" type="stmt"/>
<line num="58" count="0" type="stmt"/>
<line num="59" count="0" type="stmt"/>
<line num="60" count="0" type="stmt"/>
<line num="61" count="0" type="stmt"/>
<line num="62" count="1" type="stmt"/>
<line num="63" count="1" type="stmt"/>
</file>
</project>
</coverage>
Could it be related to the fact, that the covered files are not checked in git (they’re generated on build)? If so, is it possible to make codecov somehow respect them?
tom
October 2, 2023, 5:10pm
6
@Elringus did you resolve your question with a follow-up here ? Or are these two things not related?
Not really, as I’ve switched to vitest; not sure if it’s possible to use codecov with nodejs runner (or rather it’s able to generate a compatible coverge report).
tom
October 19, 2023, 9:07pm
8
@Elringus as the community boards are soon to be deprecated, I have moved the issue over to our feedback repo to be tracked. Let me know if I’m missing anything.