-
Notifications
You must be signed in to change notification settings - Fork 18
Description
Hello 👋,
I’m currently using GitLab, which supports displaying code coverage information directly inside the diff view of a merge request. It relies on the Cobertura format for this feature.
Previously, when I was using coverlet, this worked perfectly out of the box. However, after switching to Microsoft.Testing.Platform and the Microsoft.Testing.Extensions.CodeCoverage package, the coverage report stopped working in GitLab.
After some experimentation, I was able to make it work again by manually tweaking the generated Cobertura XML file:
dotnet run -c Release -- --report-junit --coverage --coverage-output-format cobertura --coverage-output myapp.cobertura.xml
sed -i "s@filename=\"$CI_PROJECT_DIR/@filename=\"@g" bin/Release/net9.0/TestResults/myapp.cobertura.xml
sed -i "s@<packages>@<sources><source>$CI_PROJECT_DIR/</source></sources><packages>@g" bin/Release/net9.0/TestResults/myapp.cobertura.xmlThe idea here is:
- Replace all absolute paths in the nodes with relative paths.
- Add a node containing the base path.
This makes GitLab correctly display coverage information in merge requests.
However, having to run these sed commands after each test run is not ideal.
👉 Question:
Is there already a built-in option or configuration to achieve this behavior natively?
And if not, would it be possible to add support for relative paths and sources in the Cobertura output?
Thanks a lot for your work on this project!