///|
async fn[W : @core.World] run_pickles_parallel(
factory : () -> W,
pickles : Array[@cucumber_messages.Pickle],
max_concurrent~ : Int,
sinks? : Array[&@core.MessageSink] = [],
tc_mappings? : Map[String, TestCaseMapping] = {},
id_gen? : IdGenerator = IdGenerator::new(),
retries? : Int = 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~)
}