В качестве альтернативного подхода рассмотрите возможность разделения проблемы параллелизма на настраиваемую команду с одним аргументом
commands += Command.single("testpar") { (state, numOfThreads) =>
s"""set IntegrationTest / testOptions += Tests.Argument("-P$numOfThreads")"""::
"set IntegrationTest / parallelExecution := true" ::
"set IntegrationTest / testForkedParallel := true" ::
"IntegrationTest / test" :: state
}
и выполните, скажем, testpar 6
для запуска с пулом из 6 потоков ,
Обращаясь к комментарию, для безопасности во время компиляции попробуйте
commands += Command.single("testpar") { (state, numOfThreads) =>
val extracted = Project.extract(state)
val stateWithParallel= extracted.appendWithSession(
Seq(
IntegrationTest / testOptions += Tests.Argument(s"-P$numOfThreads"),
IntegrationTest / parallelExecution := true,
IntegrationTest / testForkedParallel := true,
),
state
)
extracted.runTask(IntegrationTest / test, stateWithParallel)
state
}