Christmas 2014. I was building out projects on GitHub in open source. The obsession with open source even went on to spawn a Series of Blog Posts. Each tool or library I was building lead onto another tool or library to make the build pipeline, or development process better. Often putting down one project while I sorted out another one first. This has continued at a slow pace for the last 3 years.

Back in January 2015 I Announced Coveralls.Net. This is a code coverage publisher for publishing your coverage results to the coveralls.io API. Coveralls.io is a coverage tracking service, which is free for open source projects, with a paid service for private use, and now an Enterprise version as well. There was a bunch of python and ruby versions, but I wanted fewer dependencies on those runtimes so built my own. I even managed to get it listed as one of the two recommended .Net coverage integrations on the coveralls.io docs.

While development has been a slow work of labour over the last three years, the announcement of dotnet CLI tools (proper npm-style tools, not the weird interim dotnet-tool stuff...) with dotnet SDK 2.1, I had to jump in and get on board.

Announcing 1.0.0

Which brings me to announcing Coveralls.Net 1.0.0. This is a dotnet CLI tools compatible version of csmacnz.Coveralls. Easier to install. Easier to update. And a whole bunch new features, including more coverage options, and better autodetection processes in AppVeyor.

# install globally
dotnet tool install -g coveralls.net --version 1.0.0

# if installed globally, this should just be available on your path
csmacnz.coveralls <args>

# install into a local folder
dotnet tool install coveralls.net --version 1.0.0 --tools-path tools

# if installed into a tools path, you can run it from there.
.\tools\csmacnz.Coveralls <args>

Now, I've been struggling a bit with beta 0.8.0. It hasn't been easy to find time to test the new stuff I added, get others to test, and be happy to call it a stable release. But there was a bunch of new stuff and fixes in there. These have all rolled forward into the 1.0.0 Release now. (I might go back and call 0.8.0 stable now since it still works the old way. But for now the old way still works with stable 0.7.0 and 0.8.0-beta003.)

Still not happy/comfortable with using CLI tools? Not using 2.1? That's ok. I've used the power of the self-contained app to provide a windows, linux and osx native version (Linux targets the cross-compat Linux target) in a zip file under the Releases folder on GitHub.

For windows in PowerShell you would use it something like this:

# The TLS change was necessary on my development machine
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

$zipDownloadPath="https://github.com/csMACnz/coveralls.net/releases/download/1.0.0/coveralls.net.1.0.0-windows.zip"
Invoke-WebRequest -UseBasicParsing $zipDownloadPath -OutFile coveralls-windows.zip
mkdir coveralls-windows
Expand-Archive .\coveralls-windows.zip coveralls-windows

.\coveralls-windows\csmacnz.Coveralls.exe

I hope to get more details added on the GitHub Wiki for linux and mac usage of the self-contained app, as well as updating all the samples over at Coveralls.net-Samples.

More targets

Since the first release, targeting OpenCover coverage files (the most popular at the time), this has been expanded to include Visual Studio Coverage, monocov, Report Generator, Chutzpah javascript coverage, lcov, NCover and Coverlet cross-platform .Net coverage (via its opencover file format).

What's Next?

I've already started working on 1.1.0 while the dotnet 2.1 tools have been working towards stable.

  • Better autodetection functionality (including Travis and TeamCity)
  • dotcover support
  • parallel build support
  • add native coverlet support
  • Bug fixes that didn't make it to 1.0.0
  • Complete and test Enterprise support

Hopefully, it won't be soon before long that you will see an Announcing 1.1.0 Post.

Interested in following progress on this? I have a twitter account @coverallsdotnet That I am trying to be more proactive with. You can also track progress on the GitHub Project. Contributions welcome, though I hear I'm a bit of a stickler for quality and such. C'est la vie.

The irony of a coverage publishing tool only having 42% coverage wasn't lost on me, so I got it up to 74%. Soon enough I should get that to 100%. Probably just in time for a version 2.0.0.

Need more?

Issues, feature requests or feedback? Just write up an issue on GitHub. I would love to hear your experience of using the tool, and I would love to expand the supported coverage formats to include your favourite tool.

Thanks for using it! It makes me more inclined to make it awesome.