///|
async fn[W : @core.World] run_pickles_parallel(
factory : () -> W,
pickles : Array[@cucumber_messages.Pickle],
max_concurrent~ : Int32,
sinks~ : Array[&@core.MessageSink] = [],
tc_mappings~ : Map[String, TestCaseMapping] = {},
id_gen~ : IdGenerator = IdGenerator::new(),
retries~ : Int32 = 0,
dry_run~ : Bool = false,
skip_tags~ : Array[String] = [],
) -> Array[PickleResult] {
let tasks : Array[async () -> PickleResult] = pickles.map(fn(pickle) {
async fn() -> PickleResult {
execute_pickle(
factory,
pickle,
sinks~,
tc_mappings~,
id_gen~,
retries~,
dry_run~,
skip_tags~,
)
}
})
@async.all(tasks[:], max_concurrent~)
}