specs2 and the connection pool

1,112 views
Skip to first unread message

Joachim Hofer

unread,
Apr 9, 2012, 1:42:13 PM4/9/12
to play-framework
Hi,

I'm trying to write some very simple tests against my application, and
failing when I add a second example to my specification (my
application uses ScalaQuery, and thus some connection pool seems to be
involved).

Each example in the spec looks quite simple (it even fails when using
the same example twice), for example:

def e1 = running(FakeApplication()) {
controllers.Application.index()(FakeRequest())
true must beTrue
}

I get a stacktrace that tells me that the connection pool has been
shut down while stopping the application in the first example, but it
doesn't seem to have restarted for the second example (if I interpret
it correctly).

I've already tried setting the spec to execute its examples
sequentially, adding the "inMemoryDatabase()" to the FakeApplication,
explicitely asking for evolutions using evolutionFor()... - now I'm
stuck and would be very thankful for any kind of hint what to do...

The stacktrace is:

[error] SQLException: Attempting to obtain a connection from a
pool that has already been shutdown.
[error] Stack trace of location where pool was shutdown follows:
[error] java.lang.Thread.getStackTrace(Thread.java:1567)
[error] com.jolbox.bonecp.BoneCP.captureStackTrace(BoneCP.java:543)
[error] com.jolbox.bonecp.BoneCP.shutdown(BoneCP.java:159)
[error]
com.jolbox.bonecp.BoneCPDataSource.close(BoneCPDataSource.java:123)
[error] play.api.db.BoneCPApi.shutdownPool(DB.scala:387)
[error] play.api.db.BoneCPPlugin$$anonfun$onStop$1.apply(DB.scala:
252)
[error] play.api.db.BoneCPPlugin$$anonfun$onStop$1.apply(DB.scala:
250)
[error] scala.collection.LinearSeqOptimized
$class.foreach(LinearSeqOptimized.scala:59)
[error] scala.collection.immutable.List.foreach(List.scala:45)
[error] play.api.db.BoneCPPlugin.onStop(DB.scala:250)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply
$1.apply(Play.scala:75)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply
$1.apply(Play.scala:74)
[error] scala.collection.LinearSeqOptimized
$class.foreach(LinearSeqOptimized.scala:59)
[error] scala.collection.immutable.List.foreach(List.scala:45)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:74)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:74)
[error] scala.Option.map(Option.scala:133)
[error] play.api.Play$.stop(Play.scala:73)
[error] play.api.test.Helpers$.running(Helpers.scala:35)
[error] controllers.ApplicationSpec.index(ApplicationSpec.scala:21)
[error] controllers.ApplicationSpec$$anonfun$is$1$$anonfun$apply$3$
$anonfun$apply$5.apply(ApplicationSpec.scala:15)
[error] controllers.ApplicationSpec$$anonfun$is$1$$anonfun$apply$3$
$anonfun$apply$5.apply(ApplicationSpec.scala:15)
[error] org.specs2.specification.Example$$anonfun$apply
$1.apply(Fragment.scala:100)
[error] org.specs2.specification.Example$$anonfun$apply
$1.apply(Fragment.scala:100)
[error] org.specs2.specification.Example.execute(Fragment.scala:87)
[error] org.specs2.specification.FragmentExecution$$anonfun$result
$2$1.apply(FragmentExecution.scala:54)
[error] org.specs2.specification.FragmentExecution$$anonfun$result
$2$1.apply(FragmentExecution.scala:54)
[error] org.specs2.execute.ResultExecution
$class.execute(ResultExecution.scala:20)
[error] org.specs2.execute.ResultExecution
$.execute(ResultExecution.scala:65)
[error] org.specs2.specification.FragmentExecution
$class.executeBody(FragmentExecution.scala:30)
[error] org.specs2.runner.TestInterfaceRunner$$anon
$1.executeBody(TestInterfaceRunner.scala:82)
[error] org.specs2.specification.FragmentExecution$class.result
$2(FragmentExecution.scala:54)
[error] org.specs2.specification.FragmentExecution
$class.execute(FragmentExecution.scala:55)
[error] org.specs2.runner.TestInterfaceRunner$$anon
$1.execute(TestInterfaceRunner.scala:82)
[error] org.specs2.specification.FragmentExecution$$anonfun
$executeFragment$1$$anonfun$apply$1.apply(FragmentExecution.
scala:37)
[error] org.specs2.specification.FragmentExecution$$anonfun
$executeFragment$1$$anonfun$apply$1.apply(FragmentExecution.
scala:37)
[error] org.specs2.control.Exceptions
$class.catchAllOr(Exceptions.scala:53)
[error] org.specs2.control.Exceptions$.catchAllOr(Exceptions.scala:
98)
[error] org.specs2.specification.FragmentExecution$$anonfun
$executeFragment$1.apply(FragmentExecution.scala:37)
[error] org.specs2.specification.FragmentExecution$$anonfun
$executeFragment$1.apply(FragmentExecution.scala:37)
[error] org.specs2.reporter.DefaultExecutionStrategy$$anonfun$org
$specs2$reporter$DefaultExecutionStrategy$$executeSequ
ence$1.apply(ExecutionStrategy.scala:65)
[error] org.specs2.reporter.DefaultExecutionStrategy$$anonfun$org
$specs2$reporter$DefaultExecutionStrategy$$executeSequ
ence$1.apply(ExecutionStrategy.scala:65)
[error] scala.collection.TraversableLike$$anonfun$map
$1.apply(TraversableLike.scala:194)
[error] scala.collection.TraversableLike$$anonfun$map
$1.apply(TraversableLike.scala:194)
[error] scala.collection.LinearSeqOptimized
$class.foreach(LinearSeqOptimized.scala:59)
[error] scala.collection.immutable.List.foreach(List.scala:45)
[error] scala.collection.TraversableLike
$class.map(TraversableLike.scala:194)
[error] scala.collection.immutable.List.map(List.scala:45)
[error] org.specs2.reporter.DefaultExecutionStrategy$class.org
$specs2$reporter$DefaultExecutionStrategy$$executeSequenc
e(ExecutionStrategy.scala:65)
[error] org.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute
$1$$anonfun$3.apply(ExecutionStrategy.scala:46)
[error] org.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute
$1$$anonfun$3.apply(ExecutionStrategy.scala:43)
[error] scala.collection.TraversableOnce$$anonfun$foldLeft
$1.apply(TraversableOnce.scala:143)
[error] scala.collection.TraversableOnce$$anonfun$foldLeft
$1.apply(TraversableOnce.scala:143)
[error] scala.collection.Iterator$class.foreach(Iterator.scala:660)
[error] scala.collection.Iterator$$anon$19.foreach(Iterator.scala:
333)
[error] scala.collection.IterableViewLike$Transformed
$class.foreach(IterableViewLike.scala:41)
[error] scala.collection.SeqViewLike$$anon
$3.foreach(SeqViewLike.scala:77)
[error] scala.collection.TraversableOnce
$class.foldLeft(TraversableOnce.scala:143)
[error] scala.collection.SeqViewLike$$anon
$3.foldLeft(SeqViewLike.scala:77)
[error] org.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute
$1.apply(ExecutionStrategy.scala:43)
[error] org.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute
$1.apply(ExecutionStrategy.scala:40)
[error] org.specs2.internal.scalaz.Identity$class.$bar
$greater(Identity.scala:58)
[error] org.specs2.internal.scalaz.Identity$$anon$1.$bar
$greater(Identity.scala:169)
[error] org.specs2.reporter.ConsoleReporter$$anonfun$report
$1.apply(ConsoleReporter.scala:26)
[error] org.specs2.reporter.ConsoleReporter$$anonfun$report
$1.apply(ConsoleReporter.scala:26)
[error] org.specs2.internal.scalaz.Identity$$anon
$1.value(Identity.scala:170)
[error] org.specs2.internal.scalaz.Identity$class.$bar
$greater(Identity.scala:58)
[error] org.specs2.internal.scalaz.Identity$$anon$1.$bar
$greater(Identity.scala:169)
[error] org.specs2.reporter.ConsoleReporter
$class.report(ConsoleReporter.scala:26)
[error] org.specs2.runner.TestInterfaceRunner$$anon
$1.report(TestInterfaceRunner.scala:82)
[error] org.specs2.runner.TestInterfaceRunner$$anon
$1.report(TestInterfaceRunner.scala:82)
[error] org.specs2.runner.TestInterfaceRunner$$anonfun
$runSpecification$1.apply(TestInterfaceRunner.scala:59)
[error] org.specs2.runner.TestInterfaceRunner$$anonfun
$runSpecification$1.apply(TestInterfaceRunner.scala:58)
[error] scala.Option.map(Option.scala:133)
[error]
org.specs2.runner.TestInterfaceRunner.runSpecification(TestInterfaceRunner.scala:
58)
[error]
org.specs2.runner.TestInterfaceRunner.run(TestInterfaceRunner.scala:
54)
[error] sbt.TestRunner.delegateRun(TestFramework.scala:61)
[error] sbt.TestRunner.run(TestFramework.scala:55)
[error] sbt.TestRunner.runTest$1(TestFramework.scala:75)
[error] sbt.TestRunner.run(TestFramework.scala:84)
[error] sbt.TestFramework$$anonfun$6$$anonfun$apply$8$$anonfun$7$
$anonfun$apply$9.apply(TestFramework.scala:183)
[error] sbt.TestFramework$$anonfun$6$$anonfun$apply$8$$anonfun$7$
$anonfun$apply$9.apply(TestFramework.scala:183)
[error] sbt.TestFramework$.sbt$TestFramework$
$withContextLoader(TestFramework.scala:195)
[error] sbt.TestFramework$$anonfun$6$$anonfun$apply$8$$anonfun
$7.apply(TestFramework.scala:183)
[error] sbt.TestFramework$$anonfun$6$$anonfun$apply$8$$anonfun
$7.apply(TestFramework.scala:183)
[error] sbt.Tests$$anonfun$makeSerial$1$$anonfun$apply
$8.apply(Tests.scala:115)
[error] sbt.Tests$$anonfun$makeSerial$1$$anonfun$apply
$8.apply(Tests.scala:115)
[error] scala.collection.TraversableLike$$anonfun$map
$1.apply(TraversableLike.scala:194)
[error] scala.collection.TraversableLike$$anonfun$map
$1.apply(TraversableLike.scala:194)
[error] scala.collection.LinearSeqOptimized
$class.foreach(LinearSeqOptimized.scala:59)
[error] scala.collection.immutable.List.foreach(List.scala:45)
[error] scala.collection.TraversableLike
$class.map(TraversableLike.scala:194)
[error] scala.collection.immutable.List.map(List.scala:45)
[error] sbt.Tests$$anonfun$makeSerial$1.apply(Tests.scala:115)
[error] sbt.Tests$$anonfun$makeSerial$1.apply(Tests.scala:115)
[error] sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:
47)
[error] sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:
47)
[error] sbt.std.Transform$$anon$5.work(System.scala:67)
[error] sbt.Execute$$anonfun$submit$1$$anonfun$apply
$1.apply(Execute.scala:221)
[error] sbt.Execute$$anonfun$submit$1$$anonfun$apply
$1.apply(Execute.scala:221)
[error] sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
[error] sbt.Execute.work(Execute.scala:227)
[error] sbt.Execute$$anonfun$submit$1.apply(Execute.scala:221)
[error] sbt.Execute$$anonfun$submit$1.apply(Execute.scala:221)
[error] sbt.CompletionService$$anon$1$$anon
$2.call(CompletionService.scala:26)
[error] java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:
334)
[error] java.util.concurrent.FutureTask.run(FutureTask.java:166)
[error] java.util.concurrent.Executors
$RunnableAdapter.call(Executors.java:471)
[error] java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:
334)
[error] java.util.concurrent.FutureTask.run(FutureTask.java:166)
[error]
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
1110)
[error] java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:603)
[error] java.lang.Thread.run(Thread.java:722)
[error] (BoneCPDataSource.java:114)
[error] com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:467)
[error]
com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:
114)
[error] org.scalaquery.session.Database$$anon
$1.createConnection(Database.scala:82)
[error] org.scalaquery.session.BaseSession.conn(Session.scala:98)
[error] org.scalaquery.session.BaseSession.close(Session.scala:112)
[error] org.scalaquery.session.Database.withSession(Database.scala:38)
[error] models.Pictures$.findPicOfTheWeek(Pictures.scala:85)
[error] views.html.picOfTheWeek$.apply(picOfTheWeek.template.scala:26)
[error] views.html.index$.apply(index.template.scala:24)
[error] controllers.Application$$anonfun$index
$1.apply(Application.scala:12)
[error] controllers.Application$$anonfun$index
$1.apply(Application.scala:12)
[error] play.api.mvc.Action$$anonfun$apply$4.apply(Action.scala:204)
[error] play.api.mvc.Action$$anonfun$apply$4.apply(Action.scala:204)
[error] play.api.mvc.Action$$anon$1.apply(Action.scala:170)
[error] controllers.ApplicationSpec$$anonfun
$2.apply(ApplicationSpec.scala:38)
[error] controllers.ApplicationSpec$$anonfun
$2.apply(ApplicationSpec.scala:37)
[error] play.api.test.Helpers$.running(Helpers.scala:33)
[error] controllers.ApplicationSpec.adminLogin(ApplicationSpec.scala:
37)
[error] controllers.ApplicationSpec$$anonfun$is$1$$anonfun$apply
$7.apply(ApplicationSpec.scala:16)
[error] controllers.ApplicationSpec$$anonfun$is$1$$anonfun$apply
$7.apply(ApplicationSpec.scala:16)

Cheers,
Joachim

Marc Siegel

unread,
Jun 22, 2012, 10:14:08 AM6/22/12
to play-fr...@googlegroups.com
Joachim, we have the same problem.
Does anybody have any information useful to resolving this?

-Marc

Marc Siegel

unread,
Jun 25, 2012, 9:31:49 AM6/25/12
to play-fr...@googlegroups.com
According to Guillame Bort (@guillaume-bort) via email:

This issue will be fixed in Play 2.0.2, which is currently in RC state. It is safe to upgrade from 2.0.1 to 2.0.2, as everything is backwards compatible.

If anyone knows otherwise, please do speak up.

Thanks,
-Marc

Marc Siegel

unread,
Jun 25, 2012, 9:32:22 AM6/25/12
to play-fr...@googlegroups.com

RasputinJones

unread,
Jun 29, 2012, 1:35:58 PM6/29/12
to play-fr...@googlegroups.com
DId this fix make it into 2.0.2? Because I'm having what looks like exactly the same error here. 

Marc Siegel

unread,
Jul 2, 2012, 10:37:57 AM7/2/12
to play-fr...@googlegroups.com
I was wondering the same thing -- we haven't had time to try 2.0.2 yet. Can you please try it, and respond to this thread (and the StackOverflow question) to let us know whether this is fixed or not?

Our workaround so far is that only our integration and end-to-end tests use the real database. Our unit and functional tests, because they use the H2 in-memory database, are not subject to this problem, and can all co-exist in one run of `play test`.

For each integration-type test, we run a separate invocation of `play 'test-only TEST_CLASS_NAME"`. This allows us to work around the issue until someone finds a fix.

Regards,
-Marc

Nilanjan

unread,
Jul 2, 2012, 2:52:16 PM7/2/12
to play-fr...@googlegroups.com
Hi Joachim,

Could you please share the controller code. I am specifically interested to know whether you can 'val' in your controller that points to the connection pool. Actually the error is coming when your second test is trying to acquire the connection. BoneCP captures the stacktrace from shutdown and shows the stack when you try to get connection from already shutdown connection pool.

http://grepcode.com/file/repo1.maven.org/maven2/com.jolbox/bonecp/0.7.1.RELEASE/com/jolbox/bonecp/BoneCP.java#462

Thanks
Nilanjan

Nilanjan

unread,
Jul 2, 2012, 5:28:47 PM7/2/12
to play-fr...@googlegroups.com
If its val, try to make to def and see whether it fixes the problem. Then we can discuss about what is actually going on.

Nilanjan

RasputinJones

unread,
Jul 3, 2012, 7:10:10 AM7/3/12
to play-fr...@googlegroups.com
Yeah that might be the problem. I fixed this for myself by changing my variable from a val to a var.

Marc Siegel

unread,
Jul 3, 2012, 9:00:33 AM7/3/12
to play-fr...@googlegroups.com
Why would a controller have any explicit reference to the connection pool?

-Marc

Nilanjan

unread,
Jul 3, 2012, 12:44:07 PM7/3/12
to play-fr...@googlegroups.com
The general idea is if you have a controller that pointing to a managed resource (connection pool, Akka system) remember that after every test (with running block) they will be closed by the test. In general this doesn't cause in problem unless you have val pointing to it. I see this problem reported over and over again in the mailing list. I myself got into similar problem this week. So you basically have 2 possible solutions for this (maybe 3):

- Use def instead of val
- Use some sort of wrapper that gets initialized at onStart and uninitialized at onStop

Maybe refactor your test to not use running and instead explicit start the application at the beginning of the test and close it at the end.

HTH
Nilanjan

Marc Siegel

unread,
Jul 5, 2012, 10:16:42 AM7/5/12
to play-fr...@googlegroups.com
Thanks Nilanjan. Is this documented anywhere, with examples? It seems pretty significantly useful to have this in the testing examples, if this is now a best practice.

-Marc

Guillaume Bort

unread,
Jul 5, 2012, 10:54:30 AM7/5/12
to play-fr...@googlegroups.com
Yes that's an interesting problem. It doesn't occur in PROD of course,
and it doesn't occur in DEV because after each reloading we use a new
ClassLoader (so it automatically clean the vals).

But if during a test, you start/close several applications, this
problem will happen. We probably need to address this problem in some
way. Any idea are welcome.
> --
> You received this message because you are subscribed to the Google Groups
> "play-framework" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/play-framework/-/87LKRJylXmYJ.
>
> To post to this group, send email to play-fr...@googlegroups.com.
> To unsubscribe from this group, send email to
> play-framewor...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/play-framework?hl=en.



--
Guillaume Bort, http://guillaume.bort.fr

eee

unread,
Jul 25, 2012, 12:06:08 AM7/25/12
to play-fr...@googlegroups.com
I'm experimenting this issue on a datasource that is used to configure activiti (the bpm engine).
> To post to this group, send email to play-framework@googlegroups.com.
> To unsubscribe from this group, send email to
> play-framework+unsubscribe@googlegroups.com.

Rintcius Blok

unread,
Aug 13, 2012, 10:30:00 AM8/13/12
to play-fr...@googlegroups.com
I am currently working around this by overriding the BoneCPPlugin

class MyBoneCPPlugin(val app: Application) extends BoneCPPlugin(app) {

  override def onStop() {
    //don't stop the BoneCPPlugin because it is not restartable
    //plugin.onStop()
  }
}

and using a fakeApp like this from the tests:
  val testFakeApp = FakeApplication(withoutPlugins = Seq("play.api.db.BoneCPPlugin"), additionalPlugins = Seq("my.plugin.MyBoneCPPlugin"))

It looks to me that the core of the problem is that the BoneCPPlugin is not restartable (being restartable should be a part of the contract of the play plugins, I would say)

scott clasen

unread,
Aug 27, 2012, 11:45:49 PM8/27/12
to play-fr...@googlegroups.com
Started running into this today...any other workarounds to suggest? other than...ugh...putting all tests that use the FakeApplication into one spec

Unfortuantely i didnt have any luck with this plugin approach...

Will Sargent

unread,
Aug 28, 2012, 12:24:58 AM8/28/12
to play-fr...@googlegroups.com
On Mon, Aug 27, 2012 at 8:45 PM, scott clasen <scott....@gmail.com> wrote:
> Started running into this today...any other workarounds to suggest? other
> than...ugh...putting all tests that use the FakeApplication into one spec
>
> Unfortuantely i didnt have any luck with this plugin approach...

I haven't run into the same problem, and I'm wondering if it's because
of my set up. I'm using BoneCP 'straight" out of the box:

case class DatabaseConfiguration(databaseDriver: String,
connectionURL: String,
username: String,
password: String) {

private lazy val config = new BoneCPConfig()
Class.forName(databaseDriver)
config.setJdbcUrl(connectionURL)
config.setUsername(username)
config.setPassword(password)

private lazy val connectionPool = new BoneCP(config)

def connection = connectionPool.getConnection

def shutdown() {
connectionPool.shutdown()
}
}

So I always set up a new DatabaseConfiguration class at the start of
the test, then call shutDown at the end of it.

Will.

scott clasen

unread,
Sep 5, 2012, 1:00:09 PM9/5/12
to play-fr...@googlegroups.com
Hi Guillaume

   Would it be possible to have a subclass of mutable.Specification, called FakeApplicationSpec  that does the classloader magic and puts a fresh application into scope for the duration of all the tests in the FakeApplicationSpec?

That would probably cover a lot of cases.

SC

blackbox

unread,
Oct 11, 2012, 3:10:56 PM10/11/12
to play-fr...@googlegroups.com
Hi!
Any news from anyone?

James Roper

unread,
Oct 11, 2012, 10:41:37 PM10/11/12
to play-fr...@googlegroups.com
In Play 2.1 there are new Specs scopes that help here.  The documentation on these is here:

Peter Empen

unread,
Jul 22, 2013, 4:47:58 AM7/22/13
to play-fr...@googlegroups.com
James, your link is redirected to https://github.com/playframework/playframework. So what do you mean by a "new Specs scope"?

Umair Akeel

unread,
Jan 6, 2014, 6:11:39 PM1/6/14
to play-fr...@googlegroups.com
Thanks Rintcius Blok - this works..

I now use:

class MyBoneCPPlugin(val app: play.api.Application) extends BoneCPPlugin(app) {


  override def onStop() {
    //don't stop the BoneCPPlugin because it is not restartable
    //plugin.onStop()
  }
}

object WithDb {
 
  val fak = FakeApplication(additionalConfiguration = inMemoryDatabase(options = Map("MODE" -> "MySQL",
                                                                                  "DB_CLOSE_DELAY" -> "-1",
                                                                                  "DB_CLOSE_ON_EXIT" -> "FALSE")),
                              withoutPlugins = Seq("play.api.db.BoneCPPlugin"),
                              additionalPlugins = Seq("helpers.MyBoneCPPlugin"))
}

abstract class WithDb extends WithApplication(WithDb.fak) {
  override def around[T: AsResult](t: => T): Result = super.around {
    {
      t
    }
  }
}

And my tests can then have

class SomeDbSpec extends Specification {

    "Repo" should {
       "work" in new WithDb {
       ...
       }
     }
}

John Michael Reed

unread,
Jul 23, 2016, 12:04:40 AM7/23/16
to play-framework
I had this...

[error]    SQLException: : Attempting to obtain a connection from a pool that has already been shutdown.
[error] Stack trace of location where pool was shutdown follows:
[error]  java.lang.Thread.getStackTrace(Thread.java:1589)
[error] com.jolbox.bonecp.BoneCP.captureStackTrace(BoneCP.java:572)
[error] com.jolbox.bonecp.BoneCP.shutdown(BoneCP.java:161)
[error] com.jolbox.bonecp.BoneCPDataSource.close(BoneCPDataSource.java:143)

And I added in this...

import org.specs2.execute.AsResult
import play.api.db._
import play.api.test._

class MyBoneCPPlugin(val app: play.api.Application) extends BoneCPPlugin(app) {

 
override def onStop() {
 
//don't stop the BoneCPPlugin because it is not restartable
 
//plugin.onStop()
 
}
}

object WithDb {


 
// and using a fakeApp like this from the tests:
 val testFakeApp
 
= FakeApplication(withoutPlugins = Seq("play.api.db.BoneCPPlugin"), additionalPlugins = Seq("my.plugin.MyBoneCPPlugin"))

 
/*

 val fak = FakeApplication(additionalConfiguration = inMemoryDatabase(options = Map("MODE" -> "MySQL",
 "DB_CLOSE_DELAY" -> "-1",
 "DB_CLOSE_ON_EXIT" -> "FALSE")),
 withoutPlugins = Seq("play.api.db.BoneCPPlugin"),
 additionalPlugins = Seq("helpers.MyBoneCPPlugin"))
 */
}

abstract class WithDb extends WithApplication(WithDb.testFakeApp) {
 
override def around[T: AsResult](t: => T) = super.around {
 
{
 t
 
}
 
}
}



// test

import org.specs2.mutable._
import play.api.mvc.{Result, _}
import play.api.test._
import play.api.test.Helpers._

import scala.concurrent.Future


class SomeDbSpec extends Specification {

 
"Repo" should {

 
"send 404 on a bad request" in new WithDb{
 route
(FakeRequest(GET, "/boum")) must beNone
 
}

 
"render the index page" in new WithDb{
 val home
: Future[Result] = route(FakeRequest(GET, "/")).get

 status
(home) must equalTo(OK)
 contentType
(home) must beSome.which(_ == "text/html")
 contentAsString
(home) must contain ("users")
 
}
 
}
}



Now I get...

[play-heroku-seed] $ test
[info] Updating {file:/home/johnreed/Desktop/Apps/play-heroku-seed/}root...
[info] Resolving jline#jline;2.12.1 ...
[info] Done updating.
[info] Compiling 11 Scala sources and 1 Java source to /home/johnreed/Desktop/Apps/play-heroku-seed/target/scala-2.11/classes...
[info] Compiling 4 Scala sources to /home/johnreed/Desktop/Apps/play-heroku-seed/target/scala-2.11/test-classes...
[info] SomeDbSpec
[info]
[info] Repo should
[info] ! send 404 on a bad request
[error]    PlayException: : Cannot load plugin[Plugin [my.plugin.MyBoneCPPlugin] cannot be instantiated.]  (Application.scala:161)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:161)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:166)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.WithDefaultPlugins$class.plugins(Application.scala:128)
[error] play.api.test.FakeApplication.plugins$lzycompute(Fakes.scala:211)
[error] play.api.test.FakeApplication.plugins(Fakes.scala:211)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply$mcV$sp(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:106)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:105)
[error] play.api.Play$.stop(Play.scala:105)
[error] play.api.test.PlayRunners$class.running(Helpers.scala:51)
[error] play.api.test.Helpers$.running(Helpers.scala:405)
[error] play.api.test.WithApplication.around(Specs.scala:23)
[error] WithDb.around(MyBoneCPPlugin.scala:38)
[error] play.api.test.WithApplication.delayedInit(Specs.scala:20)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$2$$anon$1.<init>(SomeDbSpec.scala:18)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$2.apply(SomeDbSpec.scala:18)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$2.apply(SomeDbSpec.scala:18)
[error] sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:132)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:166)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.WithDefaultPlugins$class.plugins(Application.scala:128)
[error] play.api.test.FakeApplication.plugins$lzycompute(Fakes.scala:211)
[error] play.api.test.FakeApplication.plugins(Fakes.scala:211)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply$mcV$sp(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:106)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:105)
[error] play.api.Play$.stop(Play.scala:105)
[error] play.api.test.PlayRunners$class.running(Helpers.scala:51)
[error] play.api.test.Helpers$.running(Helpers.scala:405)
[error] play.api.test.WithApplication.around(Specs.scala:23)
[error] WithDb.around(MyBoneCPPlugin.scala:38)
[error] play.api.test.WithApplication.delayedInit(Specs.scala:20)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$2$$anon$1.<init>(SomeDbSpec.scala:18)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$2.apply(SomeDbSpec.scala:18)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$2.apply(SomeDbSpec.scala:18)
[error]
[error] Caused by java.lang.ClassNotFoundException: my.plugin.MyBoneCPPlugin
[error] sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:132)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:166)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.WithDefaultPlugins$class.plugins(Application.scala:128)
[error] play.api.test.FakeApplication.plugins$lzycompute(Fakes.scala:211)
[error] play.api.test.FakeApplication.plugins(Fakes.scala:211)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply$mcV$sp(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:106)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:105)
[error] play.api.Play$.stop(Play.scala:105)
[error] play.api.test.PlayRunners$class.running(Helpers.scala:51)
[error] play.api.test.Helpers$.running(Helpers.scala:405)
[error] play.api.test.WithApplication.around(Specs.scala:23)
[error] WithDb.around(MyBoneCPPlugin.scala:38)
[error] play.api.test.WithApplication.delayedInit(Specs.scala:20)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$2$$anon$1.<init>(SomeDbSpec.scala:18)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$2.apply(SomeDbSpec.scala:18)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$2.apply(SomeDbSpec.scala:18)
[info]
[info] ! render the index page
[error]    PlayException: : Cannot load plugin[Plugin [my.plugin.MyBoneCPPlugin] cannot be instantiated.]  (Application.scala:161)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:161)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:166)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.WithDefaultPlugins$class.plugins(Application.scala:128)
[error] play.api.test.FakeApplication.plugins$lzycompute(Fakes.scala:211)
[error] play.api.test.FakeApplication.plugins(Fakes.scala:211)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply$mcV$sp(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:106)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:105)
[error] play.api.Play$.stop(Play.scala:105)
[error] play.api.test.PlayRunners$class.running(Helpers.scala:51)
[error] play.api.test.Helpers$.running(Helpers.scala:405)
[error] play.api.test.WithApplication.around(Specs.scala:23)
[error] WithDb.around(MyBoneCPPlugin.scala:38)
[error] play.api.test.WithApplication.delayedInit(Specs.scala:20)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$3$$anon$2.<init>(SomeDbSpec.scala:22)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$3.apply(SomeDbSpec.scala:22)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$3.apply(SomeDbSpec.scala:22)
[error] sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:132)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:166)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.WithDefaultPlugins$class.plugins(Application.scala:128)
[error] play.api.test.FakeApplication.plugins$lzycompute(Fakes.scala:211)
[error] play.api.test.FakeApplication.plugins(Fakes.scala:211)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply$mcV$sp(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:106)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:105)
[error] play.api.Play$.stop(Play.scala:105)
[error] play.api.test.PlayRunners$class.running(Helpers.scala:51)
[error] play.api.test.Helpers$.running(Helpers.scala:405)
[error] play.api.test.WithApplication.around(Specs.scala:23)
[error] WithDb.around(MyBoneCPPlugin.scala:38)
[error] play.api.test.WithApplication.delayedInit(Specs.scala:20)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$3$$anon$2.<init>(SomeDbSpec.scala:22)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$3.apply(SomeDbSpec.scala:22)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$3.apply(SomeDbSpec.scala:22)
[error]
[error] Caused by java.lang.ClassNotFoundException: my.plugin.MyBoneCPPlugin
[error] sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:132)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:166)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.WithDefaultPlugins$class.plugins(Application.scala:128)
[error] play.api.test.FakeApplication.plugins$lzycompute(Fakes.scala:211)
[error] play.api.test.FakeApplication.plugins(Fakes.scala:211)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply$mcV$sp(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:106)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:105)
[error] play.api.Play$.stop(Play.scala:105)
[error] play.api.test.PlayRunners$class.running(Helpers.scala:51)
[error] play.api.test.Helpers$.running(Helpers.scala:405)
[error] play.api.test.WithApplication.around(Specs.scala:23)
[error] WithDb.around(MyBoneCPPlugin.scala:38)
[error] play.api.test.WithApplication.delayedInit(Specs.scala:20)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$3$$anon$2.<init>(SomeDbSpec.scala:22)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$3.apply(SomeDbSpec.scala:22)
[error] SomeDbSpec$$anonfun$2$$anonfun$apply$3.apply(SomeDbSpec.scala:22)
[info]
[info]
[info] Total for specification SomeDbSpec
[info] Finished in 362 ms
[info] 2 examples, 0 failure, 2 errors
@70o3flggk: Cannot load plugin
        at play
.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:161)
        at play
.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:130)
        at scala
.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at scala
.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at scala
.collection.immutable.List.foreach(List.scala:381)
        at scala
.collection.TraversableLike$class.map(TraversableLike.scala:234)
        at scala
.collection.immutable.List.map(List.scala:285)
        at play
.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:130)
        at play
.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:166)
        at play
.utils.Threads$.withContextClassLoader(Threads.scala:21)
        at play
.api.WithDefaultPlugins$class.plugins(Application.scala:128)
        at play
.api.test.FakeApplication.plugins$lzycompute(Fakes.scala:211)
        at play
.api.test.FakeApplication.plugins(Fakes.scala:211)
        at play
.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply$mcV$sp(Play.scala:107)
        at play
.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
        at play
.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
        at play
.utils.Threads$.withContextClassLoader(Threads.scala:21)
        at play
.api.Play$$anonfun$stop$1.apply(Play.scala:106)
        at play
.api.Play$$anonfun$stop$1.apply(Play.scala:105)
        at scala
.Option.map(Option.scala:146)
        at play
.api.Play$.stop(Play.scala:105)
        at play
.api.Play$.start(Play.scala:83)
        at play
.core.TestApplication.<init>(ApplicationProvider.scala:67)
        at play
.api.test.TestServer.start(Selenium.scala:148)
        at play
.api.test.PlayRunners$class.running(Helpers.scala:62)
        at play
.api.test.Helpers$.running(Helpers.scala:405)
        at play
.api.test.WithBrowser.around(Specs.scala:65)
        at org
.specs2.mutable.Around$$anonfun$delayedInit$1.apply(Around.scala:13)
        at org
.specs2.mutable.Around$$anonfun$delayedInit$1.apply(Around.scala:13)
        at org
.specs2.execute.ResultExecution$class.effectively(ResultExecution.scala:38)
        at org
.specs2.execute.ResultExecution$.effectively(ResultExecution.scala:116)
        at org
.specs2.mutable.Around$class.delayedInit(Around.scala:13)
        at play
.api.test.WithBrowser.delayedInit(Specs.scala:48)
        at
IntegrationSpec$$anonfun$1$$anonfun$apply$1$$anon$1.<init>(IntegrationSpec.scala:18)
        at
IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:18)
        at
IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:18)
        at org
.specs2.matcher.Scope$$anon$3.asResult(ThrownExpectations.scala:120)
        at org
.specs2.execute.AsResult$.apply(Result.scala:253)
        at org
.specs2.specification.Example$$anonfun$apply$1.apply(Fragment.scala:209)
        at org
.specs2.specification.Example$$anonfun$apply$1.apply(Fragment.scala:209)
        at org
.specs2.specification.Example.execute(Fragment.scala:176)
        at org
.specs2.specification.FragmentExecution$$anonfun$1.apply(FragmentExecution.scala:46)
        at org
.specs2.specification.FragmentExecution$$anonfun$1.apply(FragmentExecution.scala:46)
        at org
.specs2.execute.ResultExecution$class.execute(ResultExecution.scala:22)
        at org
.specs2.execute.ResultExecution$.execute(ResultExecution.scala:116)
        at org
.specs2.specification.FragmentExecution$class.executeBody(FragmentExecution.scala:28)
        at org
.specs2.reporter.SbtConsoleReporter.executeBody(SbtReporter.scala:20)
        at org
.specs2.specification.FragmentExecution$class.execute(FragmentExecution.scala:46)
        at org
.specs2.reporter.SbtConsoleReporter.execute(SbtReporter.scala:20)
        at org
.specs2.specification.FragmentExecution$$anonfun$executeFragment$1$$anonfun$apply$1.apply(FragmentExecution.scala:35)
        at org
.specs2.specification.FragmentExecution$$anonfun$executeFragment$1$$anonfun$apply$1.apply(FragmentExecution.scala:35)
        at org
.specs2.control.Exceptions$class.catchAllOr(Exceptions.scala:54)
        at org
.specs2.control.Exceptions$.catchAllOr(Exceptions.scala:109)
        at org
.specs2.specification.FragmentExecution$$anonfun$executeFragment$1.apply(FragmentExecution.scala:35)
        at org
.specs2.specification.FragmentExecution$$anonfun$executeFragment$1.apply(FragmentExecution.scala:35)
        at org
.specs2.reporter.DefaultExecutionStrategy$$anonfun$executeSequentially$1.apply(ExecutionStrategy.scala:104)
        at org
.specs2.reporter.DefaultExecutionStrategy$$anonfun$executeSequentially$1.apply(ExecutionStrategy.scala:104)
        at scala
.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at scala
.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
        at scala
.collection.immutable.List.foreach(List.scala:381)
        at scala
.collection.TraversableLike$class.map(TraversableLike.scala:234)
        at scala
.collection.immutable.List.map(List.scala:285)
        at org
.specs2.reporter.DefaultExecutionStrategy$class.executeSequentially(ExecutionStrategy.scala:104)
        at org
.specs2.reporter.SbtConsoleReporter.executeSequentially(SbtReporter.scala:20)
        at org
.specs2.reporter.DefaultExecutionStrategy$class.executeSequence(ExecutionStrategy.scala:98)
        at org
.specs2.reporter.SbtConsoleReporter.executeSequence(SbtReporter.scala:20)
        at org
.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute$1$$anonfun$2.apply(ExecutionStrategy.scala:43)
        at org
.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute$1$$anonfun$2.apply(ExecutionStrategy.scala:41)
        at scala
.collection.immutable.Stream.foldLeft(Stream.scala:610)
        at org
.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute$1.apply(ExecutionStrategy.scala:41)
        at org
.specs2.reporter.DefaultExecutionStrategy$$anonfun$execute$1.apply(ExecutionStrategy.scala:38)
        at scalaz
.syntax.IdOps$class.$bar$greater(IdOps.scala:15)
        at scalaz
.syntax.ToIdOps$$anon$1.$bar$greater(IdOps.scala:82)
        at org
.specs2.reporter.AllExporting$class.report(AllExporting.scala:17)
        at org
.specs2.reporter.SbtConsoleReporter.report(SbtReporter.scala:20)
        at org
.specs2.runner.SbtRunner.org$specs2$runner$SbtRunner$$specificationRun(SbtRunner.scala:75)
        at org
.specs2.runner.SbtRunner$$anonfun$newTask$1$$anon$5.execute(SbtRunner.scala:59)
        at sbt
.ForkMain$Run$2.call(ForkMain.java:294)
        at sbt
.ForkMain$Run$2.call(ForkMain.java:284)
        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)
Caused by: java.lang.ClassNotFoundException: my.plugin.MyBoneCPPlugin
        at java
.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java
.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java
.security.AccessController.doPrivileged(Native Method)
        at java
.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java
.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun
.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java
.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at play
.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:132)
       
... 82 more
[info] IntegrationSpec
[info]
[info] Application should
[info] ! work from within a browser
[error]    RuntimeException: : @70o3flggk: Cannot load plugin  (Selenium.scala:152)
[error] play.api.test.TestServer.start(Selenium.scala:152)
[error] play.api.test.PlayRunners$class.running(Helpers.scala:62)
[error] play.api.test.Helpers$.running(Helpers.scala:405)
[error] play.api.test.WithBrowser.around(Specs.scala:65)
[error] play.api.test.WithBrowser.delayedInit(Specs.scala:48)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1$$anon$1.<init>(IntegrationSpec.scala:18)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:18)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:18)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:161)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:166)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.WithDefaultPlugins$class.plugins(Application.scala:128)
[error] play.api.test.FakeApplication.plugins$lzycompute(Fakes.scala:211)
[error] play.api.test.FakeApplication.plugins(Fakes.scala:211)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply$mcV$sp(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:106)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:105)
[error] play.api.Play$.stop(Play.scala:105)
[error] play.api.Play$.start(Play.scala:83)
[error] play.core.TestApplication.<init>(ApplicationProvider.scala:67)
[error] play.api.test.TestServer.start(Selenium.scala:148)
[error] play.api.test.PlayRunners$class.running(Helpers.scala:62)
[error] play.api.test.Helpers$.running(Helpers.scala:405)
[error] play.api.test.WithBrowser.around(Specs.scala:65)
[error] play.api.test.WithBrowser.delayedInit(Specs.scala:48)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1$$anon$1.<init>(IntegrationSpec.scala:18)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:18)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:18)
[error] sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:132)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:166)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.WithDefaultPlugins$class.plugins(Application.scala:128)
[error] play.api.test.FakeApplication.plugins$lzycompute(Fakes.scala:211)
[error] play.api.test.FakeApplication.plugins(Fakes.scala:211)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply$mcV$sp(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:106)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:105)
[error] play.api.Play$.stop(Play.scala:105)
[error] play.api.Play$.start(Play.scala:83)
[error] play.core.TestApplication.<init>(ApplicationProvider.scala:67)
[error] play.api.test.TestServer.start(Selenium.scala:148)
[error] play.api.test.PlayRunners$class.running(Helpers.scala:62)
[error] play.api.test.Helpers$.running(Helpers.scala:405)
[error] play.api.test.WithBrowser.around(Specs.scala:65)
[error] play.api.test.WithBrowser.delayedInit(Specs.scala:48)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1$$anon$1.<init>(IntegrationSpec.scala:18)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:18)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:18)
[error]
[error] Caused by play.api.PlayException: Cannot load plugin[Plugin [my.plugin.MyBoneCPPlugin] cannot be instantiated.]
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:161)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:166)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.WithDefaultPlugins$class.plugins(Application.scala:128)
[error] play.api.test.FakeApplication.plugins$lzycompute(Fakes.scala:211)
[error] play.api.test.FakeApplication.plugins(Fakes.scala:211)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply$mcV$sp(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:106)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:105)
[error] play.api.Play$.stop(Play.scala:105)
[error] play.api.Play$.start(Play.scala:83)
[error] play.core.TestApplication.<init>(ApplicationProvider.scala:67)
[error] play.api.test.TestServer.start(Selenium.scala:148)
[error] play.api.test.PlayRunners$class.running(Helpers.scala:62)
[error] play.api.test.Helpers$.running(Helpers.scala:405)
[error] play.api.test.WithBrowser.around(Specs.scala:65)
[error] play.api.test.WithBrowser.delayedInit(Specs.scala:48)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1$$anon$1.<init>(IntegrationSpec.scala:18)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:18)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:18)
[error]
[error] Caused by java.lang.ClassNotFoundException: my.plugin.MyBoneCPPlugin
[error] sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:132)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1$$anonfun$apply$9.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:130)
[error] play.api.WithDefaultPlugins$$anonfun$plugins$1.apply(Application.scala:166)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.WithDefaultPlugins$class.plugins(Application.scala:128)
[error] play.api.test.FakeApplication.plugins$lzycompute(Fakes.scala:211)
[error] play.api.test.FakeApplication.plugins(Fakes.scala:211)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply$mcV$sp(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.api.Play$$anonfun$stop$1$$anonfun$apply$1.apply(Play.scala:107)
[error] play.utils.Threads$.withContextClassLoader(Threads.scala:21)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:106)
[error] play.api.Play$$anonfun$stop$1.apply(Play.scala:105)
[error] play.api.Play$.stop(Play.scala:105)
[error] play.api.Play$.start(Play.scala:83)
[error] play.core.TestApplication.<init>(ApplicationProvider.scala:67)
[error] play.api.test.TestServer.start(Selenium.scala:148)
[error] play.api.test.PlayRunners$class.running(Helpers.scala:62)
[error] play.api.test.Helpers$.running(Helpers.scala:405)
[error] play.api.test.WithBrowser.around(Specs.scala:65)
[error] play.api.test.WithBrowser.delayedInit(Specs.scala:48)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1$$anon$1.<init>(IntegrationSpec.scala:18)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:18)
[error] IntegrationSpec$$anonfun$1$$anonfun$apply$1.apply(IntegrationSpec.scala:18)
[info]
[info]
[info] Total for specification IntegrationSpec
[info] Finished in 795 ms
[info] 1 example, 0 failure, 1 error
[info] ApplicationSpec
[info]
[info] Application should
[info]
[info] Total for specification ApplicationSpec
[info] Finished in 0 ms
[info] 0 example, 0 failure, 0 error
[error] Error: Total 3, Failed 0, Errors 3, Passed 0
[error] Error during tests:
[error]         SomeDbSpec
[error]         IntegrationSpec
[error] (test:test) sbt.TestsFailedException: Tests unsuccessful
[error] Total time: 9 s, completed Jul 22, 2016 11:58:29 PM
[play-heroku-seed] $

Reply all
Reply to author
Forward
0 new messages