@@ -31,58 +31,66 @@ func entryPoint(passing args: __CommandLineArguments_v0?, eventHandler: Event.Ha
31
31
let exitCode = Locked ( rawValue: EXIT_SUCCESS)
32
32
33
33
do {
34
- let args = try args ?? parseCommandLineArguments ( from: CommandLine . arguments)
35
- if args. listTests ?? false {
36
- for testID in await listTestsForEntryPoint ( Test . all) {
37
- #if SWT_TARGET_OS_APPLE && !SWT_NO_FILE_IO
38
- try ? FileHandle . stdout. write ( " \( testID) \n " )
39
- #else
40
- print ( testID)
41
- #endif
42
- }
43
- } else {
44
34
#if !SWT_NO_EXIT_TESTS
45
35
// If an exit test was specified, run it. `exitTest` returns `Never`.
46
36
if let exitTest = ExitTest . findInEnvironmentForEntryPoint ( ) {
47
37
await exitTest ( )
48
38
}
49
39
#endif
50
40
51
- // Configure the test runner.
52
- var configuration = try configurationForEntryPoint ( from: args)
41
+ let args = try args ?? parseCommandLineArguments ( from: CommandLine . arguments)
42
+ // Configure the test runner.
43
+ var configuration = try configurationForEntryPoint ( from: args)
53
44
54
- // Set up the event handler.
55
- configuration. eventHandler = { [ oldEventHandler = configuration. eventHandler] event, context in
56
- if case let . issueRecorded( issue) = event. kind, !issue. isKnown {
57
- exitCode. withLock { exitCode in
58
- exitCode = EXIT_FAILURE
59
- }
45
+ // Set up the event handler.
46
+ configuration. eventHandler = { [ oldEventHandler = configuration. eventHandler] event, context in
47
+ if case let . issueRecorded( issue) = event. kind, !issue. isKnown {
48
+ exitCode. withLock { exitCode in
49
+ exitCode = EXIT_FAILURE
60
50
}
61
- oldEventHandler ( event, context)
62
51
}
52
+ oldEventHandler ( event, context)
53
+ }
63
54
64
55
#if !SWT_NO_FILE_IO
65
- // Configure the event recorder to write events to stderr.
66
- var options = Event . ConsoleOutputRecorder. Options ( )
67
- options = . for( . stderr)
68
- options. verbosity = args. verbosity
69
- let eventRecorder = Event . ConsoleOutputRecorder ( options: options) { string in
70
- try ? FileHandle . stderr. write ( string)
71
- }
56
+ // Configure the event recorder to write events to stderr.
57
+ var options = Event . ConsoleOutputRecorder. Options ( )
58
+ options = . for( . stderr)
59
+ options. verbosity = args. verbosity
60
+ let eventRecorder = Event . ConsoleOutputRecorder ( options: options) { string in
61
+ try ? FileHandle . stderr. write ( string)
62
+ }
63
+ configuration. eventHandler = { [ oldEventHandler = configuration. eventHandler] event, context in
64
+ eventRecorder. record ( event, in: context)
65
+ oldEventHandler ( event, context)
66
+ }
67
+ #endif
68
+
69
+ // If the caller specified an alternate event handler, hook it up too.
70
+ if let eventHandler {
72
71
configuration. eventHandler = { [ oldEventHandler = configuration. eventHandler] event, context in
73
- eventRecorder . record ( event, in : context)
72
+ eventHandler ( event, context)
74
73
oldEventHandler ( event, context)
75
74
}
76
- #endif
75
+ }
77
76
78
- // If the caller specified an alternate event handler, hook it up too.
79
- if let eventHandler {
80
- configuration. eventHandler = { [ oldEventHandler = configuration. eventHandler] event, context in
81
- eventHandler ( event, context)
82
- oldEventHandler ( event, context)
83
- }
77
+ if args. listTests ?? false {
78
+ let tests = await Test . all
79
+ for testID in listTestsForEntryPoint ( tests) {
80
+ // Print the test ID to stdout (classical CLI behavior.)
81
+ #if SWT_TARGET_OS_APPLE && !SWT_NO_FILE_IO
82
+ try ? FileHandle . stdout. write ( " \( testID) \n " )
83
+ #else
84
+ print ( testID)
85
+ #endif
84
86
}
85
87
88
+ // Post an event for every discovered test. These events are turned into
89
+ // JSON objects if JSON output is enabled.
90
+ for test in tests {
91
+ Event . post ( . testDiscovered, for: test, testCase: nil , configuration: configuration)
92
+ }
93
+ } else {
86
94
// Run the tests.
87
95
let runner = await Runner ( configuration: configuration)
88
96
await runner. run ( )
0 commit comments