11import { EventEmitter } from 'node:events'
22import { IdGenerator } from '@cucumber/messages'
33import { IRunOptionsRuntime } from '../api'
4- import { ILogger } from '../environment'
4+ import { ILogger , IRunEnvironment } from '../environment'
55import { SourcedPickle } from '../assemble'
66import { SupportCodeLibrary } from '../support_code_library_builder/types'
7- import { IRunEnvironment } from '../environment'
8- import { Runtime , RuntimeAdapter } from './types'
7+ import FormatterBuilder from '../formatter/builder'
8+ import { FormatOptions } from '../formatter'
9+ import { Runtime } from './types'
910import { ChildProcessAdapter } from './parallel/adapter'
1011import { InProcessAdapter } from './serial/adapter'
1112import { Coordinator } from './coordinator'
@@ -18,6 +19,7 @@ export async function makeRuntime({
1819 newId,
1920 supportCodeLibrary,
2021 options,
22+ snippetOptions,
2123} : {
2224 environment : IRunEnvironment
2325 logger : ILogger
@@ -26,25 +28,19 @@ export async function makeRuntime({
2628 sourcedPickles : ReadonlyArray < SourcedPickle >
2729 supportCodeLibrary : SupportCodeLibrary
2830 options : IRunOptionsRuntime
31+ snippetOptions : Pick < FormatOptions , 'snippetInterface' | 'snippetSyntax' >
2932} ) : Promise < Runtime > {
3033 const testRunStartedId = newId ( )
31- const adapter : RuntimeAdapter =
32- options . parallel > 0
33- ? new ChildProcessAdapter (
34- testRunStartedId ,
35- environment ,
36- logger ,
37- eventBroadcaster ,
38- options ,
39- supportCodeLibrary
40- )
41- : new InProcessAdapter (
42- testRunStartedId ,
43- eventBroadcaster ,
44- newId ,
45- options ,
46- supportCodeLibrary
47- )
34+ const adapter = await makeAdapter (
35+ options ,
36+ snippetOptions ,
37+ testRunStartedId ,
38+ environment ,
39+ logger ,
40+ eventBroadcaster ,
41+ supportCodeLibrary ,
42+ newId
43+ )
4844 return new Coordinator (
4945 testRunStartedId ,
5046 eventBroadcaster ,
@@ -54,3 +50,42 @@ export async function makeRuntime({
5450 adapter
5551 )
5652}
53+
54+ async function makeAdapter (
55+ options : IRunOptionsRuntime ,
56+ snippetOptions : Pick < FormatOptions , 'snippetInterface' | 'snippetSyntax' > ,
57+ testRunStartedId : string ,
58+ environment : IRunEnvironment ,
59+ logger : ILogger ,
60+ eventBroadcaster : EventEmitter ,
61+ supportCodeLibrary : SupportCodeLibrary ,
62+ newId : ( ) => string
63+ ) {
64+ if ( options . parallel > 0 ) {
65+ return new ChildProcessAdapter (
66+ testRunStartedId ,
67+ environment ,
68+ logger ,
69+ eventBroadcaster ,
70+ options ,
71+ snippetOptions ,
72+ supportCodeLibrary
73+ )
74+ }
75+ const snippetBuilder = await FormatterBuilder . getStepDefinitionSnippetBuilder (
76+ {
77+ cwd : environment . cwd ,
78+ snippetInterface : snippetOptions . snippetInterface ,
79+ snippetSyntax : snippetOptions . snippetSyntax ,
80+ supportCodeLibrary,
81+ }
82+ )
83+ return new InProcessAdapter (
84+ testRunStartedId ,
85+ eventBroadcaster ,
86+ newId ,
87+ options ,
88+ supportCodeLibrary ,
89+ snippetBuilder
90+ )
91+ }
0 commit comments