cake-contrib / Cake.Recipe

:page_with_curl: A set of convention based Cake scripts
https://cake-contrib.github.io/Cake.Recipe
MIT License
70 stars 53 forks source link

Improve implementation of running coverlet while falling back to opencover #570

Open AdmiringWorm opened 3 years ago

AdmiringWorm commented 3 years ago

This is something that would be nice to have, as coverlet works cross-platform and is more nicely integrated .NET Core than OpenCover is.

Unfortunately, there are some issues that not entirely prevent the implementation, but rather includes an undesirable workaround to make it work.

The reason behind this is because of what seems to be a design decision in the addin Cake.Coverlet, the path it expects for the DLL is hard-coded to use a Debug Configuration rather than being configurable (I have not reached out to the maintainer yet to see if this can be changed). The workaround would then be that we will need to manually use the StartProcess cake alias to invoke the coverlet.console utility ourselves, which is not the desired approach at this time.

This is still something we would like to tackle some time in the future, but may not happen until an eventual 3.x release.

AdmiringWorm commented 3 years ago

Cross-reference https://github.com/Romanx/Cake.Coverlet/issues/34 . This issue is currently blocked by the above linked issue.

AdmiringWorm commented 3 years ago

Once the next version of Cake.Coverlet hits, this issue can be resolved as well.

Would really like to get it into 2.0, but we will see.

AdmiringWorm commented 1 year ago

Situations have changed regarding this issue, instead of completely replacing OpenCover, instead Coverlet will be preferred for .NET Core builds before OpenCover is run.

Additionally, .NET Framework builds can opt-in to run Coverlet tool instead of OpenCover as well. Due to the changes that were necessary, it was easier to implement all logic without relying on the Cake.Coverlet addin, and the addin itself will be removed as well.

What to use can be changed by the user (coverlet msbuild, coverlet collector and opencover for .NET core , and coverlet console and opencover for .NET Framework).

It is not expected to be a breaking change, so I'll change the label to be improvement.