project/SequentialTestExecution.scala (12 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* license agreements; and to You under the Apache License, version 2.0:
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* This file is part of the Apache Pekko project, which was derived from Akka.
*/
import sbt.Def
import sbt.Keys._
import sbt._
/**
* This plugin disables parallel execution of integration tests by limiting 1 sbt task to run at a time in the
* `IntegrationTest` sbt configuration. The `parallelExecution` setting is normally used to limit test task
* concurrency, but it only applies per project. Since projections is a multi-project build with container-based
* integration tests in most sub-project's, this could result in as many test tasks running concurrently as there were
* sub-projects with integration tests and cores available on the system.
*
* Unit tests in the `Test` configuration will continue to use default `concurrentRestrictions` and `parallelExecution`
* settings.
*/
object SequentialTestExecution extends AutoPlugin {
val IntegrationTestTag = Tags.Tag("IntegrationTest")
override def trigger: PluginTrigger = allRequirements
override def globalSettings: Seq[Def.Setting[_]] = {
Seq(
IntegrationTest / test / tags := Seq(IntegrationTestTag -> 1),
Global / concurrentRestrictions := Seq(Tags.limit(IntegrationTestTag, 1)))
}
}