Skip to content

Commit b5d188f

Browse files
authored
Use global code coverage flag in swift package generate-xcodeproj (#2919)
* Use global code coverage flag in `swift package generate-xcodeproj` There's a conflict between '--enable-code-coverage' in the top-level options and the same flag in the Xcode-project generation command. This uses the top-level flag (which is required for the build parameters, even though it's only ever used by `swift test`) for both purposes. * Update swift-argument-parser dependency
1 parent 33f6e2b commit b5d188f

File tree

3 files changed

+21
-19
lines changed

3 files changed

+21
-19
lines changed

Package.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,12 @@ if ProcessInfo.processInfo.environment["SWIFTPM_LLBUILD_FWK"] == nil {
263263
if ProcessInfo.processInfo.environment["SWIFTCI_USE_LOCAL_DEPS"] == nil {
264264
package.dependencies += [
265265
.package(url: "https://github.com/apple/swift-tools-support-core.git", .branch("master")),
266-
.package(url: "https://github.com/apple/swift-argument-parser.git", .exact("0.3.0")),
266+
// The 'swift-argument-parser' version declared here must match that
267+
// used by 'swift-driver' and 'sourcekit-lsp'. Please coordinate
268+
// dependency version changes here with those projects.
269+
.package(
270+
url: "https://github.com/apple/swift-argument-parser.git",
271+
.upToNextMinor(from: "0.3.1")),
267272
.package(url: "https://github.com/apple/swift-driver.git", .branch("master")),
268273
]
269274
} else {

Sources/Commands/Options.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,9 @@ public struct SwiftToolOptions: ParsableArguments {
189189
}
190190

191191
/// Whether to enable code coverage.
192-
@Flag(name: .customLong("enable-code-coverage"), help: "Test with code coverage enabled")
192+
@Flag(name: .customLong("code-coverage"),
193+
inversion: .prefixedEnableDisable,
194+
help: "Enable code coverage")
193195
var shouldEnableCodeCoverage: Bool = false
194196

195197
// TODO: Does disable-automatic-resolution alias force-resolved-versions?

Sources/Commands/SwiftPackageTool.swift

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -540,11 +540,6 @@ extension SwiftPackageTool {
540540
@Option(help: "Path to xcconfig file", completion: .file())
541541
var xcconfigOverrides: AbsolutePath?
542542

543-
@Flag(name: .customLong("code-coverage"),
544-
inversion: .prefixedEnableDisable,
545-
help: "Enable code coverage in the generated project")
546-
var isCodeCoverageEnabled: Bool = false
547-
548543
@Option(name: .customLong("output"),
549544
help: "Path where the Xcode project should be generated")
550545
var outputPath: AbsolutePath?
@@ -559,16 +554,6 @@ extension SwiftPackageTool {
559554

560555
@Flag(help: "Do not add file references for extra files to the generated Xcode project")
561556
var skipExtraFiles: Bool = false
562-
563-
func xcodeprojOptions(with buildFlags: BuildFlags) -> XcodeprojOptions {
564-
XcodeprojOptions(
565-
flags: buildFlags,
566-
xcconfigOverrides: xcconfigOverrides,
567-
isCodeCoverageEnabled: isCodeCoverageEnabled,
568-
useLegacySchemeGenerator: useLegacySchemeGenerator,
569-
enableAutogeneration: enableAutogeneration,
570-
addExtraFiles: !skipExtraFiles)
571-
}
572557
}
573558

574559
@OptionGroup()
@@ -577,6 +562,16 @@ extension SwiftPackageTool {
577562
@OptionGroup()
578563
var options: Options
579564

565+
func xcodeprojOptions() -> XcodeprojOptions {
566+
XcodeprojOptions(
567+
flags: swiftOptions.buildFlags,
568+
xcconfigOverrides: options.xcconfigOverrides,
569+
isCodeCoverageEnabled: swiftOptions.shouldEnableCodeCoverage,
570+
useLegacySchemeGenerator: options.useLegacySchemeGenerator,
571+
enableAutogeneration: options.enableAutogeneration,
572+
addExtraFiles: !options.skipExtraFiles)
573+
}
574+
580575
func run(_ swiftTool: SwiftTool) throws {
581576
let graph = try swiftTool.loadPackageGraph()
582577

@@ -597,7 +592,7 @@ extension SwiftPackageTool {
597592
}
598593
let xcodeprojPath = Xcodeproj.buildXcodeprojPath(outputDir: dstdir, projectName: projectName)
599594

600-
var genOptions = options.xcodeprojOptions(with: swiftOptions.buildFlags)
595+
var genOptions = xcodeprojOptions()
601596
genOptions.manifestLoader = try swiftTool.getManifestLoader()
602597

603598
try Xcodeproj.generate(
@@ -616,7 +611,7 @@ extension SwiftPackageTool {
616611
diagnostics: swiftTool.diagnostics,
617612
watchmanScriptsDir: swiftTool.buildPath.appending(component: "watchman"),
618613
packageRoot: swiftTool.packageRoot!
619-
).runXcodeprojWatcher(options.xcodeprojOptions(with: swiftOptions.buildFlags))
614+
).runXcodeprojWatcher(xcodeprojOptions())
620615
}
621616
}
622617
}

0 commit comments

Comments
 (0)