Giter VIP home page Giter VIP logo

sbt-coveralls's People

Contributors

0xroch avatar andrewwhitaker avatar ckipp01 avatar dependabot[bot] avatar earldouglas avatar fommil avatar gitter-badger avatar gslowikowski avatar jozic avatar le-doude avatar levkhomich avatar mdedetrich avatar migmruiz avatar nightkr avatar pdolega avatar philwills avatar pjan avatar radoburansky avatar readmecritic avatar rolandtritsch avatar rorygraves avatar ruippeixotog avatar ryan-williams avatar salanki avatar scala-steward avatar sksamuel avatar stephen-lazaro avatar theon avatar viktor-podzigun avatar vil1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sbt-coveralls's Issues

sbt-scoverage 1.0.0 breaks Travis CI

sbt-coverage 1.0.0 (just released) changes the sbt command to:

$ sbt coverage test

so now the travis builds fail with:

[info] Set current project to sentinel (in build file:/home/travis/build/massenz/sentinel/)
[error] No such setting/task
[error] scoverage:test
[error]               ^
[error] No such setting/task
[error] scoverage:test
[error]               ^
[info] Repository = ./.git
[info] Repository = ./.git
[error] Could not find any cobertura.xml files. Has the coverage plugin run?
[error] Could not find any cobertura.xml files. Has the coverage plugin run?
[success] Total time: 1 s, completed Nov 21, 2014 6:50:22 AM

Also, please note that in case of failure, it still seems to exit with a 0 code?
(this is possibly an issue with travis, not sure).

Option to just upload

A continuous integration build should fail if the tests fail, but it shouldn't necessarily fail if there's an error uploading the coverage data to Coveralls.

In the case of Travis CI, this could be achieved by running sbt scoverage:test in the main build step, and running sbt coveralls in the after_success step.

Unfortunately, the coveralls task seems to always run scoverage:test, even if has just been executed and the coverage report files are available.

The proposed solution is to add an optional execution target, such as coveralls:upload, that would skip running scoverage:test and would proceed directly to the next step, to upload the coverage data to Coveralls.

For an example of an impacted project see this issue.

version of plugin

the README and build.sbt disagree on the latest version, which one is the right one?

Build.scala

Works with Build.sbt (supposedly) but not with Build.scala sbt projects. It's impossible to import the settings of both plugins. Is there a workaround or a solution to this?

thanks,
pjan

FileNotFoundException for multi-module projects

FIrstly, thanks for providing such useful test coverage tools for Scala projects! I really appreciate your efforts!

I've just added your sbt-scoverage and sbt-coveralls plugins to my Facsimile project. This is a multi-module project in which the sources are stored in separate sub-directories off the project root. (There are two such sub-modules, macros and core, both of which are in sub-directories of the same name.)

The coverage and coverageAggregate sbt tasks both complete OK, reporting a coverage of 100% for the first module and around 67% for the second. However, when the coveralls command is executed, it fails with a FileNotFoundException. It appears to be looking for a source file that is located almost directly off the root, rather than in the corresponding module's src/main/scala sub-directory. This is, it's looking for a file called:

/home/travis/build/Facsimile/facsimile/org/facsim/measure/Specific.scala

when it should be looking for a file called:

/home/travis/build/Facsimile/facsimile/core/src/main/scala/org/facsim/measure/Specific.scala

Any ideas? Is this a consequence of aggregating the coverage reports?

Here's the Travis CI build log, which includes the coverage output from each set of tests and the coverageAggregate command commences.

...
< macro module test output removed >
...
[info] Reading scoverage instrumentation [/home/travis/build/Facsimile/facsimile/macro/target/scala-2.11/scoverage-data/scoverage.coverage.xml]
[info] Reading scoverage measurements...
[info] Generating scoverage reports...
[info] Written Cobertura report [/home/travis/build/Facsimile/facsimile/macro/target/scala-2.11/coverage-report/cobertura.xml]
[info] Written XML coverage report [/home/travis/build/Facsimile/facsimile/macro/target/scala-2.11/scoverage-report/scoverage.xml]
[info] Written HTML coverage report [/home/travis/build/Facsimile/facsimile/macro/target/scala-2.11/scoverage-report/index.html]
[info] Coverage reports completed
[info] All done. Coverage was [100.00%]
[info] Run completed in 3 seconds, 113 milliseconds.
[info] Total number of tests run: 30
[info] Suites: completed 3, aborted 0
[info] Tests: succeeded 30, failed 0, canceled 0, ignored 11, pending 0
[info] All tests passed.
...
< core module test output removed >
...
[info] Reading scoverage instrumentation [/home/travis/build/Facsimile/facsimile/core/target/scala-2.11/scoverage-data/scoverage.coverage.xml]
[info] Reading scoverage measurements...
[info] Generating scoverage reports...
[info] Written Cobertura report [/home/travis/build/Facsimile/facsimile/core/target/scala-2.11/coverage-report/cobertura.xml]
[info] Written XML coverage report [/home/travis/build/Facsimile/facsimile/core/target/scala-2.11/scoverage-report/scoverage.xml]
[info] Written HTML coverage report [/home/travis/build/Facsimile/facsimile/core/target/scala-2.11/scoverage-report/index.html]
[info] Coverage reports completed
[info] All done. Coverage was [67.10%]
[info] Run completed in 6 seconds, 386 milliseconds.
[info] Total number of tests run: 164
[info] Suites: completed 17, aborted 0
[info] Tests: succeeded 164, failed 0, canceled 0, ignored 0, pending 0
[info] All tests passed.
[success] Total time: 95 s, completed May 20, 2015 6:11:57 PM
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0
[info] Loading project definition from /home/travis/build/Facsimile/facsimile/project
[info] Set current project to Facsimile Simulation Library (in build file:/home/travis/build/Facsimile/facsimile/)
[info] Setting version to 2.11.6
[info] Reapplying settings...
[info] Set current project to Facsimile Simulation Library (in build file:/home/travis/build/Facsimile/facsimile/)
[info] Aggregating coverage from subprojects...
[info] Found 2 subproject report files [/home/travis/build/Facsimile/facsimile/core/target/scala-2.11/scoverage-report/scoverage.xml,/home/travis/build/Facsimile/facsimile/macro/target/scala-2.11/scoverage-report/scoverage.xml]
[info] Generating scoverage reports...
[info] Written Cobertura report [/home/travis/build/Facsimile/facsimile/target/scala-2.11/coverage-report/cobertura.xml]
[info] Written XML coverage report [/home/travis/build/Facsimile/facsimile/target/scala-2.11/scoverage-report/scoverage.xml]
[info] Written HTML coverage report [/home/travis/build/Facsimile/facsimile/target/scala-2.11/scoverage-report/index.html]
[info] Coverage reports completed
[info] Aggregation complete. Coverage was [67.39]
[success] Total time: 3 s, completed May 20, 2015 6:12:12 PM
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0
[info] Loading project definition from /home/travis/build/Facsimile/facsimile/project
[info] Set current project to Facsimile Simulation Library (in build file:/home/travis/build/Facsimile/facsimile/)
[info] Setting version to 2.11.6
[info] Reapplying settings...
[info] Set current project to Facsimile Simulation Library (in build file:/home/travis/build/Facsimile/facsimile/)
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[info] Repository = ./.git
java.io.FileNotFoundException: /home/travis/build/Facsimile/facsimile/org/facsim/measure/Specific.scala (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at scala.io.Source$.fromFile(Source.scala:90)
    at scala.io.Source$.fromFile(Source.scala:75)
    at scala.io.Source$.fromFile(Source.scala:53)
    at org.scoverage.coveralls.CoberturaReader.reportForSource(CoberturaReader.scala:34)
    at org.scoverage.coveralls.CoverallsPlugin$$anonfun$doCoveralls$5.apply(CoverallsPlugin.scala:91)
    at org.scoverage.coveralls.CoverallsPlugin$$anonfun$doCoveralls$5.apply(CoverallsPlugin.scala:90)
    at scala.collection.immutable.HashSet$HashSet1.foreach(HashSet.scala:153)
    at scala.collection.immutable.HashSet$HashTrieSet.foreach(HashSet.scala:306)
    at scala.collection.immutable.HashSet$HashTrieSet.foreach(HashSet.scala:306)
    at org.scoverage.coveralls.CoverallsPlugin$.doCoveralls(CoverallsPlugin.scala:90)
    at org.scoverage.coveralls.CoverallsPlugin$$anonfun$coverallsCommand$1.apply(CoverallsPlugin.scala:28)
    at org.scoverage.coveralls.CoverallsPlugin$$anonfun$coverallsCommand$1.apply(CoverallsPlugin.scala:28)
    at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:29)
    at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:29)
    at sbt.Command$.process(Command.scala:92)
    at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:98)
    at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:98)
    at sbt.State$$anon$1.process(State.scala:184)
    at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:98)
    at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:98)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
    at sbt.MainLoop$.next(MainLoop.scala:98)
    at sbt.MainLoop$.run(MainLoop.scala:91)
    at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:70)
    at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:65)
    at sbt.Using.apply(Using.scala:24)
    at sbt.MainLoop$.runWithNewLog(MainLoop.scala:65)
    at sbt.MainLoop$.runAndClearLast(MainLoop.scala:48)
    at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:32)
    at sbt.MainLoop$.runLogged(MainLoop.scala:24)
    at sbt.StandardMain$.runManaged(Main.scala:53)
    at sbt.xMain.run(Main.scala:28)
    at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
    at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
    at xsbt.boot.Launch$.run(Launch.scala:109)
    at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
    at xsbt.boot.Launch$.launch(Launch.scala:117)
    at xsbt.boot.Launch$.apply(Launch.scala:18)
    at xsbt.boot.Boot$.runImpl(Boot.scala:41)
    at xsbt.boot.Boot$.main(Boot.scala:17)
    at xsbt.boot.Boot.main(Boot.scala)
[error] java.io.FileNotFoundException: /home/travis/build/Facsimile/facsimile/org/facsim/measure/Specific.scala (No such file or directory)
[error] Use 'last' for the full log.
The command "sbt ++$TRAVIS_SCALA_VERSION scalastyle coverage test && sbt ++$TRAVIS_SCALA_VERSION coverageAggregate && sbt ++$TRAVIS_SCALA_VERSION coveralls" exited with 1.

StringIndexOutOfBoundsException when running on Travis CI

Release: 1.0.0.BETA1

This just failed on Travis (but works just fine locally); I used sbt coverage test coveralls as the script: line in my travis.yml:

[info] All tests passed.
[info] Passed: Total 17, Failed 0, Errors 0, Passed 17
[success] Total time: 88 s, completed Nov 27, 2014 7:47:16 AM
[info] Repository = ./.git
[info] Repository = ./.git
[info] Uploading to coveralls.io succeeded: Job #20.1
[info] https://coveralls.io/jobs/3521899
[info] (results may not appear immediately)
java.lang.StringIndexOutOfBoundsException: String index out of range: -7
    at java.lang.String.substring(String.java:1911)
    at org.scoverage.coveralls.CoverallsClient.postFile(CoverallsClient.scala:38)
    at org.scoverage.coveralls.CoverallsPlugin$$anonfun$projectSettings$8.apply(CoverallsPlugin.scala:112)
    at org.scoverage.coveralls.CoverallsPlugin$$anonfun$projectSettings$8.apply(CoverallsPlugin.scala:61)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
  ...

Please note that this very same error happens locally if one does not define COVERALLS_REPO_TOKEN (but notice in that case it does not even try to upload - while on Travis it uploaded successfully, then failed).

Coveralls plugin seems to be running tests multiple times on TravisCI

I'm rather new to sbt-coverage and Coveralls, so it's entirely possible I did something wrong, but I basically followed the site instructions. Coverage tests seem to be running, but now my builds on TravisCI seem to consistently fail with "GC overhead limit exceeded" errors. The only obvious difference from previous builds is that with the sbt-coveralls plugin, tests seem to be running four times before the VM crashes (instead of the expected single run).

DOC: Upstream Bug: No sources for files

I've seen this a few times and thought it was an sbt-coveralls bug, but looks like it is actually a problem upstream lemurheavy/coveralls-public#375

If this doesn't fix itself, we're going to have to dump coveralls.io because these sorts of reports are kinda the whole point. started working again for me. Workaround is:

  • sign out of coveralls.io
  • revoke all coveralls tokens in github
  • sign in to coveralls.io, go through authorization again, resync all repos
  • wait up to an hour

NoSuchMethod during upload

After all the coverage data is collected, I get java.lang.NoSuchMethodError: scalaj.http.MultiPart.<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V. Now, as far as I can tell, that method does exist, and I have no idea why this is happening.

Here is our config:

resolvers += Classpaths.sbtPluginReleases

addSbtPlugin("org.scoverage" %% "sbt-scoverage" % "0.99.7.1")

addSbtPlugin("org.scoverage" %% "sbt-coveralls" % "0.99.0")

and the package resolution, from scoverage through scalaj-http.

[info] Resolving org.scoverage#sbt-scoverage;0.99.7.1 ...
[info] Resolving org.scoverage#scalac-scoverage-plugin_2.10;0.99.7 ...
[info] Resolving org.scala-lang#scala-library;2.10.4 ...
[info] Resolving commons-io#commons-io;2.4 ...
[info] Resolving org.scoverage#sbt-coveralls;0.99.0 ...
[info] Resolving com.fasterxml.jackson.core#jackson-core;2.4.2 ...
[info] Resolving com.fasterxml.jackson.module#jackson-module-scala_2.10;2.4.2 ...
[info] Resolving org.scala-lang#scala-reflect;2.10.4 ...
[info] Resolving com.fasterxml.jackson.core#jackson-annotations;2.4.2 ...
[info] Resolving com.fasterxml.jackson.core#jackson-databind;2.4.2 ...
[info] Resolving com.thoughtworks.paranamer#paranamer;2.6 ...
[info] Resolving com.google.code.findbugs#jsr305;2.0.1 ...
[info] Resolving com.google.guava#guava;15.0 ...
[info] Resolving org.eclipse.jgit#org.eclipse.jgit;3.4.1.201406201815-r ...
[info] Resolving com.jcraft#jsch;0.1.50 ...
[info] Resolving com.googlecode.javaewah#JavaEWAH;0.7.9 ...
[info] Resolving org.apache.httpcomponents#httpclient;4.1.3 ...
[info] Resolving org.apache.httpcomponents#httpcore;4.1.4 ...
[info] Resolving commons-logging#commons-logging;1.1.1 ...
[info] Resolving commons-codec#commons-codec;1.4 ...
[info] Resolving org.scalaj#scalaj-http_2.10;0.3.16 ...

Finally, the full stack trace:

java.lang.NoSuchMethodError: scalaj.http.MultiPart.<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
    at com.github.theon.coveralls.ScalaJHttpClient.multipart(CoverallsClient.scala:52)
    at com.github.theon.coveralls.CoverallsClient.postFile(CoverallsClient.scala:36)
    at AbstractCoverallsPlugin$class.coverallsCommand(CoverallsPlugin.scala:156)
    at CoverallsPlugin$.coverallsCommand(CoverallsPlugin.scala:12)
    at CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:67)
    at CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:67)
    at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:35)
    at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:34)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
    at sbt.std.Transform$$anon$4.work(System.scala:64)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
    at sbt.Execute.work(Execute.scala:244)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

JsonParseException when uploading reports to coveralls

I've just upgraded to version 0.99.2.1 of org.scoverage.sbt-scoverage, which seems to work absolutely fine on its own - even though my use case may be a bit on the complex side, cross-compiling sub-projects to 2.10.4 and 2.11.

I'm trying to get it to integrate with coveralls, and while the setup instructions are clear and easy to follow, I'm getting nasty stack traces (appended at the end of this ticket).

It might be something I've done wrong, in which case I apologise for wasting your time, but I feel that the configuration instructions are clear enough and easy enough to follow that I'm inclined to think there might be issues with running sbt-coveralls against the brand-new (as of this morning) sbt-coverage.

I don't know whether that's any help, but the issues I'm having are with the following projet:
Fetch.

com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
 at [Source: java.io.StringReader@5925bfa; line: 1, column: 2]
    at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1369)
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:532)
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:453)
    at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleUnexpectedValue(ReaderBasedJsonParser.java:1386)
    at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:669)
    at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:2926)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2873)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034)
    at com.github.theon.coveralls.CoverallsClient.postFile(CoverallsClient.scala:37)
    at AbstractCoverallsPlugin$class.coverallsCommand(CoverallsPlugin.scala:155)
    at CoverallsPlugin$.coverallsCommand(CoverallsPlugin.scala:12)
    at CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:67)
    at CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:67)
    at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:35)
    at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:34)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
    at sbt.std.Transform$$anon$4.work(System.scala:64)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
    at sbt.Execute.work(Execute.scala:244)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:695)
[error] (json4s-jackson/*:coveralls) com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
[error]  at [Source: java.io.StringReader@5925bfa; line: 1, column: 2]

No coverage data added to coveralls

I have followed exact steps as mentioned in the readme. But I face the following error when I run sbt coveralls:

[error] Could not find any cobertura.xml files. Has the coverage plugin run?
[info] Uploading to coveralls.io succeeded: Job #x.y
[info] https://coveralls.io/jobs/xyz
[info](results may not appear immediately)

I ran sbt coverage and sbt coverage test (and also sbt clean coverage test) before running sbt coveralls.

Please help in fixing this issue.

doesn't send folder info for sub projects

I have a project with two subprojects:
https://github.com/quantifind/Sumac

They are each in a separate folder in the repo, but the reports sent to coveralls seem to search for the files at the root of the repo (there is an option to change this, but it sets one subdirectory for the whole repo, which is not the case here):
https://coveralls.io/files/168116601

Could sbt-coveralls figure out that it's working on separate source folders and send the info directly?

sbt-coveralls doesn't support multi-builds

sbt-coveralls is looking at the project root for a file, instead of inside the correct subproject.

$ sbt coverage
...
$ sbt coverageAggregate
...
$ sbt coveralls
...
[error] java.io.FileNotFoundException: /Users/michael/hack/allenai/scholar/org/allenai/s2metrics/common/MetricsService.scala (No such file or directory)
[error] Use 'last' for the full log.
$ find . -name MetricsService
./metrics/src/main/scala/org/allenai/s2metrics/common/MetricsService.scala

Version 1.0.0 appears to be broken with latest version of sbt

Looking at CoberturaReader in version 1.0.0, it looks very fragile and sure enough with sbt 0.13.9, source files are not found because they are missing the src / main / scala in the path.

I don't know if sbt changed it's behavior in a recent version, I suspect it used to store the class files under target under src / main / scala and does not do so anymore. CoberturaMultiSourceReader seems like it should behave fine for our build, so maybe all that is needed is a new release.

Warn on conflicting COVERALLS tokens

If you have one defined in the sbt file and one defined in env, the env one silently wins.
Put better logging in and potentially fail on conflict.

No coverage data added to coverall (bis)

This sounds like a clone of issue #33, but it really isn't.

When running sbt coveralls after having successfully ran sbt coverageAggregate on a multi-modules project, everything seems fine, a new build is successfully created on coveralls.io, but that build has no coverage data.

Here's sbt coveralls' output (full build output available here):

[info] Set current project to fetch (in build file:/home/travis/build/nrinaudo/fetch/)
[info] Repository = ./.git
[info] Repository = ./.git
[info] Repository = ./.git
[info] Repository = ./.git
[info] Repository = ./.git
[info] Repository = ./.git
[info] Uploading to coveralls.io succeeded: Job #125.2
[info] Uploading to coveralls.io succeeded: Job #125.2
[info] https://coveralls.io/jobs/4926893
[info] https://coveralls.io/jobs/4926894
[info] (results may not appear immediately)
[info] (results may not appear immediately)
[info] Uploading to coveralls.io succeeded: Job #125.2
[info] https://coveralls.io/jobs/4926895
[info] (results may not appear immediately)
[info] Uploading to coveralls.io succeeded: Job #125.2
[info] https://coveralls.io/jobs/4926896
[info] (results may not appear immediately)
[info] Uploading to coveralls.io succeeded: Job #125.2
[info] https://coveralls.io/jobs/4926897
[info] (results may not appear immediately)
[info] Uploading to coveralls.io succeeded: Job #125.2
[info] https://coveralls.io/jobs/4926898
[info] (results may not appear immediately)
[success] Total time: 6 s, completed Mar 16, 2015 2:18:53 PM

And here's the corresponding coveralls build.

I'd be happy to perform any diagnosis task that would be considered helpful.

Git repository should be configurable

https://github.com/scoverage/sbt-coveralls/blob/master/src/main/scala/org/scoverage/coveralls/CoverallsPlugin.scala#L72

In my projects, the sbt root directory is not the one that contains .git. If I ln -s the .git directory to the sbt root directory, I get FileNotFoundExceptions because it's looking for the source files in the sbt root directory directly. So, my sources are in "projects/tox4j/src/main/java/.", but it looks in "projects/tox4j/.". The workaround is to ln -s those, as well.

Build not failing when it should

When running coveralls the build shows this error messages:

[error] (scoverage-test:compile) Compilation failed

and

Could not find any cobertura.xml files. Has the coverage plugin run?

But the build succeeds instead of failing:

[success] Total time: 99 s, completed Jan 21, 2014 6:20:55 PM

The source code on which this is happening is at this commit.

The build should fail at the first error ("Compilation failed"), but if not, it should certainly fail at the second ("Could not find any cobertura.xml files").

This seems to be related to sbt-coveralls, since running locally sbt clean scoverage:test; echo $?; outputs status code 1 as expected. The same happens when running the project's custom scripts/sbt loader script.

As a workaround, it fails as it should when tests are explicitly compiled before calling coveralls, as seen here.

Can't resolve 1.0.0

Is 1.0.0 published? I tried with addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.0.0"), and end up with a following error.

[error] (*:update) sbt.ResolveException: unresolved dependency: org.scoverage#sbt-coveralls;l.0.0: not found

parsing coveralls response seams to cause exception

From Travis CI server, I got some errors such as the following. It seams the parsing of the Coveralls response. I think this might be caused by unexpected answer (with status 500).

java.lang.StringIndexOutOfBoundsException: String index out of range: -7
    at java.lang.String.substring(String.java:1949)
    at org.scoverage.coveralls.CoverallsClient.postFile(CoverallsClient.scala:38)
    at org.scoverage.coveralls.AbstractCoverallsPlugin$class.coverallsCommand(CoverallsPlugin.scala:151)
    at org.scoverage.coveralls.CoverallsPlugin$.coverallsCommand(CoverallsPlugin.scala:9)
    at org.scoverage.coveralls.CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:62)
    at org.scoverage.coveralls.CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:62)
    at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:35)
    at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:34)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
    at sbt.std.Transform$$anon$4.work(System.scala:64)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
    at sbt.Execute.work(Execute.scala:244)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:701)
[error] (babel-fish/*:coveralls) java.lang.StringIndexOutOfBoundsException: String index out of range: -7

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching coveralls.io found.

Here is the full report:

https://travis-ci.org/pathikrit/dijon/builds/20807499#L354

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching coveralls.io found.
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
at scalaj.http.Http$$anonfun$2.apply(Http.scala:227)
at scalaj.http.Http$$anonfun$2.apply(Http.scala:218)
at scalaj.http.Http$Request.process(Http.scala:96)
at scalaj.http.Http$Request.apply(Http.scala:84)
at scalaj.http.Http$Request.asString(Http.scala:127)
at com.github.theon.coveralls.ScalaJHttpClient.multipart(CoverallsClient.scala:56)
at com.github.theon.coveralls.CoverallsClient.postFile(CoverallsClient.scala:36)
at AbstractCoverallsPlugin$class.coverallsCommand(CoverallsPlugin.scala:155)
at CoverallsPlugin$.coverallsCommand(CoverallsPlugin.scala:12)
at CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:67)
at CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:67)
at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:35)
at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:34)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
at sbt.std.Transform$$anon$4.work(System.scala:64)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
at sbt.Execute.work(Execute.scala:244)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.security.cert.CertificateException: No subject alternative DNS name matching coveralls.io found.
at sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:191)
at sun.security.util.HostnameChecker.match(HostnameChecker.java:93)
at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:347)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:203)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1323)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
at scalaj.http.Http$$anonfun$2.apply(Http.scala:227)
at scalaj.http.Http$$anonfun$2.apply(Http.scala:218)
at scalaj.http.Http$Request.process(Http.scala:96)
at scalaj.http.Http$Request.apply(Http.scala:84)
at scalaj.http.Http$Request.asString(Http.scala:127)
at com.github.theon.coveralls.ScalaJHttpClient.multipart(CoverallsClient.scala:56)
at com.github.theon.coveralls.CoverallsClient.postFile(CoverallsClient.scala:36)
at AbstractCoverallsPlugin$class.coverallsCommand(CoverallsPlugin.scala:155)
at CoverallsPlugin$.coverallsCommand(CoverallsPlugin.scala:12)
at CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:67)
at CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:67)
at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:35)
at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:34)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
at sbt.std.Transform$$anon$4.work(System.scala:64)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
at sbt.Execute.work(Execute.scala:244)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
error javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching coveralls.io found.
[error] Total time: 50 s, completed Mar 14, 2014 11:52:31 PM

Build fails completely:

๏ฟฝ[0m[๏ฟฝ[0minfo๏ฟฝ[0m] ๏ฟฝ[0mLoading global plugins from /Users/pbhowmick/.sbt/0.13/plugins๏ฟฝ[0m
๏ฟฝ[0m[๏ฟฝ[0minfo๏ฟฝ[0m] ๏ฟฝ[0mLoading project definition from /Users/pbhowmick/Projects/play-test/project๏ฟฝ[0m
๏ฟฝ[0m[๏ฟฝ[0minfo๏ฟฝ[0m] ๏ฟฝ[0mSet current project to play-test (in build file:/Users/pbhowmick/Projects/play-test/)๏ฟฝ[0m
๏ฟฝ[0m[๏ฟฝ[0minfo๏ฟฝ[0m] ๏ฟฝ[0mCompiling 5 Scala sources and 1 Java source to /Users/pbhowmick/Projects/play-test/target/scala-2.10/scoverage-classes...๏ฟฝ[0m
[scoverage]: Begin profiling phase

 while compiling: /Users/pbhowmick/Projects/play-test/target/scala-2.10/src_managed/main/routes_reverseRouting.scala
    during phase: scoverage
 library version: version 2.10.3
compiler version: version 2.10.3

reconstructed args: -P:scoverage:excludedPackages: -P:scoverage:dataDir:/Users/pbhowmick/Projects/play-test/target/scala-2.10 -encoding utf8 -classpath /Users/pbhowmick/Projects/play-test/target/scala-2.10/scoverage-classes:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.sksamuel.scoverage/scalac-scoverage-plugin_2.10/jars/scalac-scoverage-plugin_2.10-0.95.0.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/commons-io/commons-io/jars/commons-io-2.4.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe.play/play_2.10/jars/play_2.10-2.2.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe.play/sbt-link/jars/sbt-link-2.2.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/org.javassist/javassist/bundles/javassist-3.18.0-GA.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe.play/play-exceptions/jars/play-exceptions-2.2.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe.play/templates_2.10/jars/templates_2.10-2.2.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.github.scala-incubator.io/scala-io-file_2.10/jars/scala-io-file_2.10-0.4.2.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.github.scala-incubator.io/scala-io-core_2.10/jars/scala-io-core_2.10-0.4.2.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.jsuereth/scala-arm_2.10/jars/scala-arm_2.10-1.3.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe.play/play-iteratees_2.10/jars/play-iteratees_2.10-2.2.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/org.scala-stm/scala-stm_2.10/jars/scala-stm_2.10-0.7.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe/config/bundles/config-1.0.2.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe.play/play-json_2.10/jars/play-json_2.10-2.2.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe.play/play-functional_2.10/jars/play-functional_2.10-2.2.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe.play/play-datacommons_2.10/jars/play-datacommons_2.10-2.2.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/joda-time/joda-time/jars/joda-time-2.2.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/org.joda/joda-convert/jars/joda-convert-1.3.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.fasterxml.jackson.core/jackson-annotations/jars/jackson-annotations-2.2.2.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.fasterxml.jackson.core/jackson-core/jars/jackson-core-2.2.2.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.fasterxml.jackson.core/jackson-databind/jars/jackson-databind-2.2.2.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/sbt/boot/scala-2.10.2/lib/scala-reflect.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/io.netty/netty/bundles/netty-3.7.0.Final.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe.netty/netty-http-pipelining/jars/netty-http-pipelining-1.1.2.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/org.slf4j/slf4j-api/jars/slf4j-api-1.7.5.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/org.slf4j/jul-to-slf4j/jars/jul-to-slf4j-1.7.5.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.7.5.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/ch.qos.logback/logback-core/jars/logback-core-1.0.13.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/ch.qos.logback/logback-classic/jars/logback-classic-1.0.13.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe.akka/akka-actor_2.10/jars/akka-actor_2.10-2.2.0.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe.akka/akka-slf4j_2.10/bundles/akka-slf4j_2.10-2.2.0.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/org.apache.commons/commons-lang3/jars/commons-lang3-3.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.ning/async-http-client/jars/async-http-client-1.7.18.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/oauth.signpost/signpost-core/jars/signpost-core-1.2.1.2.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/commons-codec/commons-codec/jars/commons-codec-1.3.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/oauth.signpost/signpost-commonshttp4/jars/signpost-commonshttp4-1.2.1.2.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/org.apache.httpcomponents/httpcore/jars/httpcore-4.0.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/org.apache.httpcomponents/httpclient/jars/httpclient-4.0.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/commons-logging/commons-logging/jars/commons-logging-1.1.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/xerces/xercesImpl/jars/xercesImpl-2.11.0.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/xml-apis/xml-apis/jars/xml-apis-1.4.01.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/javax.transaction/jta/jars/jta-1.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.typesafe.play/play-cache_2.10/jars/play-cache_2.10-2.2.1.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/net.sf.ehcache/ehcache-core/jars/ehcache-core-2.6.6.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.unboundid/unboundid-ldapsdk/jars/unboundid-ldapsdk-2.3.5.jar -deprecation -language:postfixOps -language:implicitConversions -language:experimental.macros -language:dynamics -bootclasspath /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsfd.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Frameworks/JavaRuntimeSupport.framework/Resources/Java/JavaRuntimeSupport.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/laf.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/sunrsasign.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jce.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/org.scala-lang/scala-library/jars/scala-library-2.10.3.jar -feature -Yrangepos -unchecked -Xplugin:/usr/local/Cellar/play/2.2.1/libexec/framework/../repository/cache/com.sksamuel.scoverage/scalac-scoverage-plugin_2.10/jars/scalac-scoverage-plugin_2.10-0.95.0.jar

last tree to typer: Select(Ident(controllers), javascript)
symbol: package javascript in package controllers (flags: final )
symbol definition: final package javascript
tpe: controllers.javascript.type
symbol owners: package javascript -> package controllers
context owners: package javascript

== Enclosing template or block ==

Apply( // def invoked(id: Int,path: String): Unit in object Invoker, tree.tpe=Unit
"scoverage"."Invoker"."invoked" // def invoked(id: Int,path: String): Unit in object Invoker, tree.tpe=(id: Int, path: String)Unit
// 2 arguments
14
"/Users/pbhowmick/Projects/play-test/target/scala-2.10/scoverage.measurement"
)

== Expanded type of tree ==

SingleType(
pre = SingleType(
pre = ThisType(package )
package controllers
)
package javascript
)

unhandled exception while transforming routes_reverseRouting.scala
๏ฟฝ[0m[๏ฟฝ[31merror๏ฟฝ[0m] ๏ฟฝ[0muncaught exception during compilation: java.lang.ClassCastException๏ฟฝ[0m
java.lang.ClassCastException: scala.reflect.internal.Trees$Block cannot be cast to scala.reflect.internal.Trees$RefTree
at scala.reflect.internal.Trees$class.itransform(Trees.scala:1296)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:46)
at scoverage.ScoverageComponent$CoverageTransformer.process(plugin.scala:382)
at scoverage.ScoverageComponent$CoverageTransformer.transform(plugin.scala:99)
at scoverage.ScoverageComponent$CoverageTransformer.transform(plugin.scala:67)
at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
at scala.collection.immutable.List.loop$1(List.scala:170)
at scala.collection.immutable.List.mapConserve(List.scala:186)
at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:46)
at scoverage.ScoverageComponent$CoverageTransformer.process(plugin.scala:382)
at scoverage.ScoverageComponent$CoverageTransformer.transform(plugin.scala:99)
at scoverage.ScoverageComponent$CoverageTransformer.transform(plugin.scala:67)
at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
at scoverage.ScoverageComponent$$anon$1.run(plugin.scala:56)
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
at xsbt.CachedCompiler0.run(CompilerInterface.scala:123)
at xsbt.CachedCompiler0.run(CompilerInterface.scala:99)
at xsbt.CompilerInterface.run(CompilerInterface.scala:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:102)
at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:48)
at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:41)
at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply$mcV$sp(AggressiveCompile.scala:98)
at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:98)
at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:98)
at sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed(AggressiveCompile.scala:159)
at sbt.compiler.AggressiveCompile$$anonfun$3.compileScala$1(AggressiveCompile.scala:97)
at sbt.compiler.AggressiveCompile$$anonfun$3.apply(AggressiveCompile.scala:142)
at sbt.compiler.AggressiveCompile$$anonfun$3.apply(AggressiveCompile.scala:86)
at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:38)
at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:36)
at sbt.inc.Incremental$.cycle(Incremental.scala:73)
at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:33)
at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:32)
at sbt.inc.Incremental$.manageClassfiles(Incremental.scala:41)
at sbt.inc.Incremental$.compile(Incremental.scala:32)
at sbt.inc.IncrementalCompile$.apply(Compile.scala:26)
at sbt.compiler.AggressiveCompile.compile2(AggressiveCompile.scala:150)
at sbt.compiler.AggressiveCompile.compile1(AggressiveCompile.scala:70)
at sbt.compiler.AggressiveCompile.apply(AggressiveCompile.scala:45)
at sbt.Compiler$.apply(Compiler.scala:70)
at sbt.Defaults$.sbt$Defaults$$compileTaskImpl(Defaults.scala:722)
at sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:716)
at sbt.Defaults$$anonfun$compileTask$1.apply(Defaults.scala:716)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
at sbt.std.Transform$$anon$4.work(System.scala:64)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
at sbt.Execute.work(Execute.scala:244)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
๏ฟฝ[0m[๏ฟฝ[31merror๏ฟฝ[0m] ๏ฟฝ[0m(scoverage:๏ฟฝ[31mcompile๏ฟฝ[0m) java.lang.ClassCastException: scala.reflect.internal.Trees$Block cannot be cast to scala.reflect.internal.Trees$RefTree๏ฟฝ[0m
๏ฟฝ[0m[๏ฟฝ[31merror๏ฟฝ[0m] ๏ฟฝ[0mTotal time: 4 s, completed Jan 27, 2014 5:54:43 PM๏ฟฝ[0m
๏ฟฝ[0m[๏ฟฝ[31merror๏ฟฝ[0m] ๏ฟฝ[0mCould not find any cobertura.xml files. Has the coverage plugin run?๏ฟฝ[0m
๏ฟฝ[0m[๏ฟฝ[32msuccess๏ฟฝ[0m] ๏ฟฝ[0mTotal time: 5 s, completed Jan 27, 2014 5:54:44 PM๏ฟฝ[0m

Received fatal alert: handshake_failure

After our build runs, the coveralls reports are not uploaded, and we see the stack trace below that mentions "Received fatal alert: handshake_failure".

Possibly a similar cipher suite issue to #13, as https://www.ssllabs.com/ssltest/analyze.html?d=coveralls.io says the current cert is valid from "Wed, 07 Oct 2015 00:00:00 UTC"?

Running on Travis with the following .travis.yml:

sudo: false
language: scala
scala:
  - 2.11.7
jdk:
  - oraclejdk8

script: sbt clean coverage test
after_success: sbt coveralls

project/plugins.sbt:

addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.0.4")

addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.0.0")

Seeing this stack trace:

$ sbt coveralls
Detected sbt version 0.13.5
Using jvm options defined in file /etc/sbt/jvmopts
# Executing command line:
/usr/lib/jvm/java-8-oracle/bin/java
-Xms2048M
-Xmx2048M
-Xss6M
-XX:MaxPermSize=512M
-jar
/home/travis/.sbt/launchers/0.13.5/sbt-launch.jar
warn
"set javaHome in ThisBuild := Some(file("/usr/lib/jvm/java-8-oracle"))"
info
coveralls
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0
[info] Loading project definition from /home/travis/build/redacted/project
[info] Set current project to redacted (in build file:/home/travis/build/redacted/)
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[info] Repository = ./.git
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
    at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2011)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1113)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1363)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1391)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1375)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1282)
    at sun.net.www.protocol.http.HttpURLConnection.access$100(HttpURLConnection.java:90)
    at sun.net.www.protocol.http.HttpURLConnection$8.run(HttpURLConnection.java:1249)
    at sun.net.www.protocol.http.HttpURLConnection$8.run(HttpURLConnection.java:1247)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessController.doPrivileged(AccessController.java:713)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1246)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at scalaj.http.Http$$anonfun$3.apply(Http.scala:364)
    at scalaj.http.Http$$anonfun$3.apply(Http.scala:329)
    at scalaj.http.Http$Request.process(Http.scala:159)
    at org.scoverage.coveralls.ScalaJHttpClient.multipart(CoverallsClient.scala:71)
    at org.scoverage.coveralls.CoverallsClient.postFile(CoverallsClient.scala:33)
    at org.scoverage.coveralls.CoverallsPlugin$.doCoveralls(CoverallsPlugin.scala:97)
    at org.scoverage.coveralls.CoverallsPlugin$$anonfun$coverallsCommand$1.apply(CoverallsPlugin.scala:28)
    at org.scoverage.coveralls.CoverallsPlugin$$anonfun$coverallsCommand$1.apply(CoverallsPlugin.scala:28)
    at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:31)
    at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:31)
    at sbt.Command$.process(Command.scala:95)
    at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:100)
    at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:100)
    at sbt.State$$anon$1.process(State.scala:179)
    at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:100)
    at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:100)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
    at sbt.MainLoop$.next(MainLoop.scala:100)
    at sbt.MainLoop$.run(MainLoop.scala:93)
    at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:71)
    at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:66)
    at sbt.Using.apply(Using.scala:25)
    at sbt.MainLoop$.runWithNewLog(MainLoop.scala:66)
    at sbt.MainLoop$.runAndClearLast(MainLoop.scala:49)
    at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:33)
    at sbt.MainLoop$.runLogged(MainLoop.scala:25)
    at sbt.StandardMain$.runManaged(Main.scala:57)
    at sbt.xMain.run(Main.scala:29)
    at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
    at xsbt.boot.Launch$.withContextLoader(Launch.scala:129)
    at xsbt.boot.Launch$.run(Launch.scala:109)
    at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:36)
    at xsbt.boot.Launch$.launch(Launch.scala:117)
    at xsbt.boot.Launch$.apply(Launch.scala:19)
    at xsbt.boot.Boot$.runImpl(Boot.scala:44)
    at xsbt.boot.Boot$.main(Boot.scala:20)
    at xsbt.boot.Boot.main(Boot.scala)
[error] javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
[error] Use 'last' for the full log.

Source file paths not converted properly

Show stopper for me. Here is what I've figured out and the steps.

Run "sbt coverage test coverageReport" on project

This works fine and will generate a cobertura report as expected in /workspace/project/target/scala-2.10/coverage-report/cobertura.xml

Looking at the XML found in that file, here's what I see:

<coverage line-rate="0.90" lines-covered="900" lines-valid="806" branches-covered="68" branches-valid="49" branch-rate="0.72" complexity="0" version="1.0" timestamp="1430920680420">

<sources> 
   <source>--source</source>
   <source>/workspace/project/src/main/scala</source> 
   <source>/workspace/project/src/main/java</source>
</sources>

<packages>
     <package name="com.tritondigital.counters" line-rate="0.88" branch-rate="0.71" complexity="0">
     <classes>
           <class name="package" filename="com/tritondigital/counters/package.scala" line-rate="1.00" branch-rate="1.00" complexity="0">
          </class>
     ....
</packages>

Run coveralls

The coveralls does the following:

def sourceFilenames = {
   (elem \\ "class" \\ "@filename").map{ childProjectDir + _.toString }.toSet
}

In my case, childProjectDir is equal to /workspace/project. This means that the sourceFileNames all resolve to the wrong thing because the actual source directory is missing from the path (i.e.: We are missing the src/main/scala part in the built path).

It results in a stack trace:

java.io.FileNotFoundException:  /workspace/project/com/tritondigital/counters/logback/LogPublisher.scala (No such file or directory)

(notice the missing source directory above)

I'm uncertain if this is a coveralls problem or one with the reporting ...

sbt-coveralls doesn't work when SourceForge is down.

Currently, sbt-coveralls doesn't function at all because SourceForge's repository service is down.
I'm not sure if it's avoidable by sbt-coveralls though.

So what's happening is that at some point of coveralls task, cobertura might be used and the XML generated by it or some other library uses the DTD located at http://cobertura.sourceforge.net/xml/coverage-04.dtd

However, SourceForge is not functioning well.

That coverage-04.dtd page gives
damn-source-forge2

So when running sbt coveralls, I get this.

damn-source-forge

Is there a way to workaround? Or should it be fixed by sbt-scoverage or cobertura?

Source directories must not be nested

Hi,
I'm trying a very simple build with coveralls, but it fails with this error:
ava.lang.IllegalArgumentException: requirement failed: Source directories must not be nested

It's a single module buils and contains one src/main/scala directory

build.sbt only contains:

lazy val sprayVersion = "1.3.2"
organization := "com.example"
version := "0.1.0"
scalaVersion := "2.11.5"
name := "coveralls-test"
libraryDependencies ++= Seq(
"commons-codec" % "commons-codec" % "1.10",
"io.spray" %% "spray-json" % sprayVersion,
"io.spray" %% "spray-client" % sprayVersion,
"com.typesafe.scala-logging" %% "scala-logging" % "3.1.0",
"ch.qos.logback" % "logback-classic" % "1.1.3",
"ch.qos.logback" % "logback-core" % "1.1.3",
"com.typesafe.akka" %% "akka-actor" % "2.3.14",
"org.scalatest" %% "scalatest" % "2.2.4" % Test,
"junit" % "junit" % "4.12" % Test,
"org.pegdown" % "pegdown" % "1.1.0" % Test)

Any ideas?

sbt-coveralls is not available on http://jcenter.bintray.com/

Recently i tried to add sbt-coveralls to my project and when i added

resolvers += "JCenter" at "http://jcenter.bintray.com/" to my build.sbt file, i was getting an error about not being able to resolve dependency. After some googling and trials, i managed to find proper resolver :

resolvers += "JCenter2" at "http://dl.bintray.com/"

After this i was able to compile my project.

You should either fix the README , or add your libraries to jcenter.bintray.com.

SSL exception

It seems that Coveralls have changed their SSL certificate due to the heartbleed bug. I'm getting this exception on my builds:

javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:946)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at scalaj.http.Http$$anonfun$2.apply(Http.scala:227)
    at scalaj.http.Http$$anonfun$2.apply(Http.scala:218)
    at scalaj.http.Http$Request.process(Http.scala:96)
    at scalaj.http.Http$Request.apply(Http.scala:84)
    at scalaj.http.Http$Request.asString(Http.scala:127)
    at com.github.theon.coveralls.ScalaJHttpClient.multipart(CoverallsClient.scala:56)
    at com.github.theon.coveralls.CoverallsClient.postFile(CoverallsClient.scala:36)
    at AbstractCoverallsPlugin$class.coverallsCommand(CoverallsPlugin.scala:155)
    at CoverallsPlugin$.coverallsCommand(CoverallsPlugin.scala:12)
    at CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:67)
    at CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:67)
    at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:35)
    at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:34)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
    at sbt.std.Transform$$anon$4.work(System.scala:64)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
    at sbt.Execute.work(Execute.scala:244)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
    at sun.security.ssl.InputRecord.read(InputRecord.java:482)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
    at scalaj.http.Http$$anonfun$2.apply(Http.scala:227)
    at scalaj.http.Http$$anonfun$2.apply(Http.scala:218)
    at scalaj.http.Http$Request.process(Http.scala:96)
    at scalaj.http.Http$Request.apply(Http.scala:84)
    at scalaj.http.Http$Request.asString(Http.scala:127)
    at com.github.theon.coveralls.ScalaJHttpClient.multipart(CoverallsClient.scala:56)
    at com.github.theon.coveralls.CoverallsClient.postFile(CoverallsClient.scala:36)
    at AbstractCoverallsPlugin$class.coverallsCommand(CoverallsPlugin.scala:155)
    at CoverallsPlugin$.coverallsCommand(CoverallsPlugin.scala:12)
    at CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:67)
    at CoverallsPlugin$$anonfun$coverallsSettings$7.apply(CoverallsPlugin.scala:67)
    at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:35)
    at scala.Function10$$anonfun$tupled$1.apply(Function10.scala:34)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
    at sbt.std.Transform$$anon$4.work(System.scala:64)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
    at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
    at sbt.Execute.work(Execute.scala:244)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
    at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
    at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

document the need to add configuration to your build.sbt to enable travis-pro as a service_name

I was getting very strange coveralls reports when using this plugin when using travis-pro. The coverall reports on coveralls.io linked to other repositories and listed branches that did not exist. I found that the service_name was not being set correctly after talking with coveralls.io support. I found this old issue on the xsbt-coveralls-plugin project. I used the same strategy to set the service name in my build.sbt:

import CoverallsPlugin.CoverallsKeys._
seq(CoverallsPlugin.singleProject: _*)
coverallsServiceName := "travis-pro"

This should be documented somewhere in the README.md, along with overriding other configuration settings in CoverallsPlugin.CoverallsKeys.

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"

Hi,

I've tried the new sbt-coveralls 1.0.3 version and receive the following error:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[info] Repository = ./.git
[error] Could not find the cobertura.xml file. Did you call coverageAggregate?
java.io.FileNotFoundException: /home/travis/build/tudarmstadt-lt/DIVID-DJ/target/scala-2.10/coverage-report/cobertura.xml (No such file or directory)

This is the corresponding travis.yaml file. I had this issue before (version 1.0.0) and thought it is related to the broken multi-project support.

Any thoughts? I'm guessing that the file is not written, because the logger can't be instantiated. Maybe because I have these two dependencies on my build path?

val logging  = "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0"  
val logback  = "ch.qos.logback" % "logback-classic" % "1.1.3"           

Update:

I stumbled upon this issue #49 and downgraded sbt-scoverage to version 1.0.4. However, I receive the same error.

Failed tests don't break the build.

I'm using sbt-coveralls to run ScalaTest tests on Travis. If tests fail, set still returns 0, and Travis registers the build as having 'succeeded'.

My .travis.yml looks like this:

language: scala
scala:
   - 2.10.4
   - 2.11.2
   - 2.11.4
script: "sbt coveralls"

And here's some sample output (you can see the whole build history here):

[info] ParserSpec:
[info] The SQL Parser
[info] Exception encountered when attempting to run a suite with class name: ParserSpec *** ABORTED ***
[info]   java.lang.ExceptionInInitializerError:
[info]   at ParserSpec.ParserSpec$$assertReconstructed(ParserSpec.scala:22)
[info]   at ParserSpec$$anonfun$1.apply$mcV$sp(ParserSpec.scala:27)
[info]   at ParserSpec$$anonfun$1.apply(ParserSpec.scala:27)
[info]   at ParserSpec$$anonfun$1.apply(ParserSpec.scala:27)
[info]   at org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)
[info]   at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
[info]   at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:22)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:20)
[info]   at org.scalatest.FlatSpecLike$$anon$1.apply(FlatSpecLike.scala:1647)
[info]   ...
[info]   Cause: java.lang.NullPointerException:
[info]   at deebee.sql.SQLParser$.<init>(SQLParser.scala:89)
[info]   at deebee.sql.SQLParser$.<clinit>(SQLParser.scala)
[info]   at ParserSpec.ParserSpec$$assertReconstructed(ParserSpec.scala:22)
[info]   at ParserSpec$$anonfun$1.apply$mcV$sp(ParserSpec.scala:27)
[info]   at ParserSpec$$anonfun$1.apply(ParserSpec.scala:27)
[info]   at ParserSpec$$anonfun$1.apply(ParserSpec.scala:27)
[info]   at org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)
[info]   at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
[info]   at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info]   at org.scalatest.Transformer.apply(Transformer.scala:22)
[info]   ...
[info] [scoverage] Waiting for measurement data to sync...
[info] [scoverage] Reading scoverage instrumentation [/home/travis/build/hawkw/deebee/target/scala-2.11/scoverage-data/scoverage.coverage.xml]
[info] [scoverage] Reading scoverage measurements...
[info] [scoverage] Generating Cobertura report [/home/travis/build/hawkw/deebee/target/scala-2.11/coverage-report/cobertura.xml]
[info] [scoverage] Generating XML report [/home/travis/build/hawkw/deebee/target/scala-2.11/scoverage-report/scoverage.xml]
[info] [scoverage] Generating HTML report [/home/travis/build/hawkw/deebee/target/scala-2.11/scoverage-report/index.html]
[info] [scoverage] Reports completed
[error] [scoverage] Coverage is below minimum [0.17% < 70.0%]
[info] [scoverage] All done. Coverage was [0.17%]
[info] Run completed in 5 seconds, 596 milliseconds.
[info] Total number of tests run: 0
[info] Suites: completed 0, aborted 1
[info] Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0
[info] *** 1 SUITE ABORTED ***
[error] Error during tests:
[error]     ParserSpec
[error] (scoverage:test) sbt.TestsFailedException: Tests unsuccessful
[error] Total time: 70 s, completed Nov 25, 2014 7:59:16 PM
[info] Repository = ./.git
[info] Uploading to coveralls.io succeeded: Job #28.3
[info] https://coveralls.io/jobs/3504752
[info] (results may not appear immediately)
[success] Total time: 74 s, completed Nov 25, 2014 7:59:20 PM

Plugin dupplicates log messages

It seems that the plugin duplicates log messages for a build. Please take a look on this build log. If I run only sbt test the log output contains no duplicate log entries. But if I run sbt coveralls then the build produces very large logs because of the duplication. It seems that if I add more test then the duplication of every log entry increases.

Any idea how this can be fixed?

The produced log is for this pull request.

out of memory when running in travis [renamed]

we're using the instructions from the README that say to use

script:
- "sbt coveralls"

in the travis config. But this means that bad connections to coveralls.io will fail the entire build!

You might want to look toward advising this in the after_success stage instead, and offering a command that simply uploads the results of a previous scoverage run (which does go into the main build pipeline)

Fix plugin coveralls error handling

When the plugin fails to upload it gets a StringOutOfBounds because the error response is now a json object not an html document.

This means that the error from the plugin is most unhelpful.

@sksamuel This is more of a mental note for me to fix it.

Override branch name with environment variable

Hi,

coveralls is pushing out ids rather than branch names.
Would it be possible to have an environment variable override, eg CI_BRANCH?

Code hint:

def currentBranch: String =
sys.env.get("CI_BRANCH").getOrElse(repository.getBranch())

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.