From d74835be5e01841238ec8f2e5aa3a86828448537 Mon Sep 17 00:00:00 2001 From: Jonathan Grynspan Date: Thu, 11 Jul 2024 20:20:32 -0400 Subject: [PATCH] Add the formalized Swift Testing event stream arguments to `swift test`. (#7768) --- Sources/Commands/SwiftTestCommand.swift | 55 ++++++++++++++++++------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/Sources/Commands/SwiftTestCommand.swift b/Sources/Commands/SwiftTestCommand.swift index d81f1b410cc..8ff59d6d2f0 100644 --- a/Sources/Commands/SwiftTestCommand.swift +++ b/Sources/Commands/SwiftTestCommand.swift @@ -80,6 +80,38 @@ struct SharedOptions: ParsableArguments { var testProduct: String? } +struct TestEventStreamOptions: ParsableArguments { + /// Legacy equivalent of ``configurationPath``. + @Option(name: .customLong("experimental-configuration-path"), + help: .private) + var experimentalConfigurationPath: AbsolutePath? + + /// Path where swift-testing's JSON configuration should be read. + @Option(name: .customLong("configuration-path"), + help: .hidden) + var configurationPath: AbsolutePath? + + /// Legacy equivalent of ``eventStreamOutputPath``. + @Option(name: .customLong("experimental-event-stream-output"), + help: .private) + var experimentalEventStreamOutputPath: AbsolutePath? + + /// Path where swift-testing's JSON output should be written. + @Option(name: .customLong("event-stream-output-path"), + help: .hidden) + var eventStreamOutputPath: AbsolutePath? + + /// Legacy equivalent of ``eventStreamVersion``. + @Option(name: .customLong("experimental-event-stream-version"), + help: .private) + var experimentalEventStreamVersion: Int? + + /// The schema version of swift-testing's JSON input/output. + @Option(name: .customLong("event-stream-version"), + help: .hidden) + var eventStreamVersion: Int? +} + struct TestCommandOptions: ParsableArguments { @OptionGroup() var globalOptions: GlobalOptions @@ -91,6 +123,10 @@ struct TestCommandOptions: ParsableArguments { @OptionGroup() var testLibraryOptions: TestLibraryOptions + /// Options for Swift Testing's event stream. + @OptionGroup() + var testEventStreamOptions: TestEventStreamOptions + /// If tests should run in parallel mode. @Flag(name: .customLong("parallel"), inversion: .prefixedNo, @@ -155,21 +191,6 @@ struct TestCommandOptions: ParsableArguments { var enableExperimentalTestOutput: Bool { return testOutput == .experimentalSummary } - - /// Path where swift-testing's JSON configuration should be read. - @Option(name: .customLong("experimental-configuration-path"), - help: .hidden) - var configurationPath: AbsolutePath? - - /// Path where swift-testing's JSON output should be written. - @Option(name: .customLong("experimental-event-stream-output"), - help: .hidden) - var eventStreamOutputPath: AbsolutePath? - - /// The schema version of swift-testing's JSON input/output. - @Option(name: .customLong("experimental-event-stream-version"), - help: .hidden) - var eventStreamVersion: Int? } /// Tests filtering specifier, which is used to filter tests to run. @@ -653,6 +674,10 @@ extension SwiftTestCommand { @OptionGroup() var testLibraryOptions: TestLibraryOptions + /// Options for Swift Testing's event stream. + @OptionGroup() + var testEventStreamOptions: TestEventStreamOptions + // for deprecated passthrough from SwiftTestTool (parse will fail otherwise) @Flag(name: [.customLong("list-tests"), .customShort("l")], help: .hidden) var _deprecated_passthrough: Bool = false