scoverage / sbt-coveralls Goto Github PK
View Code? Open in Web Editor NEWsbt-plugin to upload sbt-scoverage reports to coveralls
Home Page: https://github.com/scoverage
License: Other
sbt-plugin to upload sbt-scoverage reports to coveralls
Home Page: https://github.com/scoverage
License: Other
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).
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.
the README
and build.sbt
disagree on the latest version, which one is the right one?
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
Both here and in the scoverage documentation.
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.
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).
if we find a file that is the output of a coverageAggregate
we should only upload that one file and skip the others.
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).
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:
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)
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]
I understand that the scoverage report format changed in 1.1.x so do we need any code changes to deal with that?
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.
java.io.IOException: Server returned HTTP response code: 503 for URL: http://cobertura.sourceforge.net/xml/coverage-04.dtd
Wondering if cobertura has migrated from sourceforge?
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?
Hi
I've tried to add sbt-coveralls plugin "1.0.0" as described in readme, but it's not found in maven repo.
Looks like it was not published to https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/org.scoverage/sbt-coveralls/scala_2.10/sbt_0.13/
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
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.
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.
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.
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.
Currently, sbt-coveralls
assumes that the endpoint is coveralls.io. This means sbt-coveralls
can't be used with an enterprise version of coveralls.
Take a look here: https://github.com/pathikrit/dijon (I added coveralls support in this commit)
It generated really weird report: https://coveralls.io/r/pathikrit/dijon
I filed an issue with http://coveralls.io since it crashes their site too if you click on the package.scala
: lemurheavy/coveralls-public#257
But the report looks so strange on their end - so did the coveralls plugin send really weird data to them?
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.
See: twitter/chill#217
Specifically the error message here:
https://travis-ci.org/twitter/chill/jobs/50245868#L1399
There is some partial success, but it seems to only upload some of the results even though the log seems to show that coverage data was generated for all the subprojects.
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
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
I am putting together a PR for ensime-server that breaks the project into modules
https://github.com/ensime/ensime-server/pull/841
but the coverage report is down by almost 8% despite it just being a reorganisation!
Also, the links on coveralls don't work in the PR coverage report ๐ฟ
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
๏ฟฝ[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
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.
Show stopper for me. Here is what I've figured out and the steps.
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>
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 ...
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
So when running sbt coveralls
, I get this.
Is there a way to workaround? Or should it be fixed by sbt-scoverage or cobertura?
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?
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.
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)
an sbt scoverage:test
followed by an sbt coveralls
will run the tests again (no clean
called between these invokations), e.g. https://travis-ci.org/ensime/ensime-server/builds/34223276
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
.
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.
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
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.
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)
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.
A bump in the version would be great to have the changes propagate in the Ivy repositories.
Much appreciated :-)
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())
Although the latest fix now means that the final coverage number is pushed to coveralls, the files don't actually appear, e.g. https://coveralls.io/builds/3476548
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.