SBT plugin that uploads scala code coverage to https://coveralls.io and integrates with Travis CI. This plugin uses scoverage to generate the code coverage metrics.
For an example project that uses this plugin click here. For example output click here
- Add the following to your
project/build.sbt
file
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.3.5")
addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.1.0")
-
Setup coveralls configuration options (such as Specifying Your Repo Token)
-
Register on
https://coveralls.io/
-
Follow the instructions for either Travis CI or Manual Usage
sbt-coveralls
can be run by Travis CI by following these instructions:
-
Add the following to you
travis.yml
script: "sbt clean coverage test" after_success: "sbt coverageReport coveralls"
If you have a multi-module project, perform coverageAggregate
as a separate command
script:
- sbt clean coverage test coverageReport &&
sbt coverageAggregate
after_success:
- sbt coveralls
- Job done! Commit these changes to
travis.yml
to kick off your Travis build and you should see coverage reports appear on https://coveralls.io/
-
Get the repo token for your repo from http://coveralls.io
-
Let
sbt-coveralls
know what your coveralls repo token is. See Specifying Your Repo Token -
In the SBT console, run
coverage
then your tests finishing withcoveralls
. After running the command, you should see output similar to the following:Uploading to coveralls.io succeeded: Job #17.1 https://coveralls.io/jobs/12207
For example output click here
There is an issue with the latest version of sbt-coveralls and Play projects created using the default templates on 2.4.x. In order to work around this, we suggest you use the following versions of sbt-coverage/sbt-coveralls in your plugins.sbt
resolvers += Classpaths.sbtPluginReleases
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.0.1")
addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.0.0")
There are several ways to tell sbt-coveralls
your repo token to support different use cases:
Add the following to your build.sbt
. The path can be absolute and point to somewhere outside the project or relative and point somewhere inside the project (such as src/main/resources/token.txt
).
Just remember: Do not store repo tokens inside your project if it is in a public git repository!
import org.scoverage.coveralls.Imports.CoverallsKeys._
coverallsTokenFile := "/path/to/my/repo/token.txt"
Do not store repo tokens inside your project if it is in a public git repository!
import org.scoverage.coveralls.Imports.CoverallsKeys._
coverallsToken := Some("my-token")
Add an environment variable COVERALLS_REPO_TOKEN
, for example:
export COVERALLS_REPO_TOKEN=my-token
If you're using https://coveralls.io as your endpoint, then you don't need to set this option. If you're using a hosted (enterprise) instance of coveralls, you will need to specify your endpoint in one of two ways.
import org.scoverage.coveralls.Imports.CoverallsKeys._
coverallsEndpoint := Some("http://my-instance.com")
Add an environment variable COVERALLS_ENDPOINT
, for example:
export COVERALLS_ENDPOINT=http://my-instance.com
By default sbt-coveralls
assumes your source files are UTF-8
encoded. To use a different encoding, add the following to your build.sbt
import org.scoverage.coveralls.Imports.CoverallsKeys._
encoding := "ISO-8859-1"
Once the plugin has slurped your source code into memory using the specified encoding, it will be converted into UTF-8 to be sent to the coveralls API. This is because the coveralls API uses a JSON request body and RFC 4627 mandates that JSON must be UTF encoded.
It is important to set the correct service_name
when using Travis-Pro. The default is to use travis-ci
. To override this value, add the following to your build.sbt
import org.scoverage.coveralls.Imports.CoverallsKeys._
coverallsServiceName := Some("travis-pro")
sbt-coveralls
is open source software released under the Apache 2 License.