Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,19 @@ extension Generator {
static func createAutogeneratedXCSchemes(
schemeAutogenerationMode: SchemeAutogenerationMode,
buildMode: BuildMode,
targetResolver: TargetResolver
targetResolver: TargetResolver,
customSchemeNames: Set<String>
) throws -> [XCScheme] {
guard schemeAutogenerationMode != .none else {
let shouldAutogenerateSchemes: Bool
switch schemeAutogenerationMode {
case .none:
shouldAutogenerateSchemes = false
case .all:
shouldAutogenerateSchemes = true
case .auto:
shouldAutogenerateSchemes = customSchemeNames.isEmpty
}
guard shouldAutogenerateSchemes else {
return []
}

Expand Down
3 changes: 2 additions & 1 deletion tools/generator/src/Generator/Environment.swift
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,8 @@ struct Environment {
let createAutogeneratedXCSchemes: (
_ schemeAutogenerationMode: SchemeAutogenerationMode,
_ buildMode: BuildMode,
_ targetResolver: TargetResolver
_ targetResolver: TargetResolver,
_ customSchemeNames: Set<String>
) throws -> [XCScheme]

let createXCSharedData: (_ schemes: [XCScheme]) -> XCSharedData
Expand Down
3 changes: 2 additions & 1 deletion tools/generator/src/Generator/Generator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,8 @@ class Generator {
schemes.append(contentsOf: try environment.createAutogeneratedXCSchemes(
project.schemeAutogenerationMode,
buildMode,
targetResolver
targetResolver,
Set(schemes.map(\.name))
))
let sharedData = environment.createXCSharedData(schemes)

Expand Down
27 changes: 21 additions & 6 deletions tools/generator/test/CreateAutogeneratedXCSchemesTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,8 @@ the archive action buildConfiguration did not match for \(scheme.name)
extensionPointIdentifiers: [:],
consolidatedTargetKeys: [:],
pbxTargets: [:]
)
),
customSchemeNames: []
)
let expected = [XCScheme]()
XCTAssertEqual(schemes, expected)
Expand All @@ -402,7 +403,8 @@ the archive action buildConfiguration did not match for \(scheme.name)
let schemes = try Generator.createAutogeneratedXCSchemes(
schemeAutogenerationMode: .auto,
buildMode: .xcode,
targetResolver: targetResolver
targetResolver: targetResolver,
customSchemeNames: []
)
// -1 since we don't create a scheme for WatchKit Extensions
XCTAssertEqual(schemes.count, pbxTargetsDict.count - 1)
Expand Down Expand Up @@ -585,20 +587,32 @@ Xcode.IDEFoundation.Launcher.PosixSpawn
)
}

func test_createAutogeneratedXCSchemes_withTargets_bazel_withSchemeModeAuto() throws {
func test_createAutogeneratedXCSchemes_withTargets_bazel_withSchemeModeAuto_noCustomSchemes() throws {
let schemes = try Generator.createAutogeneratedXCSchemes(
schemeAutogenerationMode: .auto,
buildMode: .bazel,
targetResolver: targetResolver
targetResolver: targetResolver,
customSchemeNames: []
)
try assertBazelSchemes(schemes: schemes)
}

func test_createAutogeneratedXCSchemes_withTargets_bazel_withSchemeModeAuto_withCustomSchemes() throws {
let schemes = try Generator.createAutogeneratedXCSchemes(
schemeAutogenerationMode: .auto,
buildMode: .bazel,
targetResolver: targetResolver,
customSchemeNames: ["Custom Scheme"]
)
XCTAssertEqual(schemes, [])
}

func test_createAutogeneratedXCSchemes_withTargets_bazel_withSchemeModeAll() throws {
let schemes = try Generator.createAutogeneratedXCSchemes(
schemeAutogenerationMode: .all,
buildMode: .bazel,
targetResolver: targetResolver
targetResolver: targetResolver,
customSchemeNames: []
)
try assertBazelSchemes(schemes: schemes)
}
Expand All @@ -607,7 +621,8 @@ Xcode.IDEFoundation.Launcher.PosixSpawn
let schemes = try Generator.createAutogeneratedXCSchemes(
schemeAutogenerationMode: .none,
buildMode: .bazel,
targetResolver: targetResolver
targetResolver: targetResolver,
customSchemeNames: []
)
XCTAssertEqual(schemes, [])
}
Expand Down
15 changes: 11 additions & 4 deletions tools/generator/test/GeneratorTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,10 @@ final class GeneratorTests: XCTestCase {
pbxTargets: pbxTargets
)
let customXcodeSchemes = [XcodeScheme]()
let customXCSchemes = [XCScheme]()
let customXCSchemes: [XCScheme] = [
.init(name: "Custom Scheme", lastUpgradeVersion: nil, version: nil),
]
let customSchemeNames = Set(customXCSchemes.map(\.name))
let autogeneratedXCSchemes = [
XCScheme(name: "Autogenerated Scheme", lastUpgradeVersion: nil, version: nil),
]
Expand Down Expand Up @@ -567,26 +570,30 @@ final class GeneratorTests: XCTestCase {
let schemeAutogenerationMode: SchemeAutogenerationMode
let buildMode: BuildMode
let targetResolver: TargetResolver
let customSchemeNames: Set<String>
}

var createAutogeneratedXCSchemesCalled: [CreateAutogeneratedXCSchemesCalled] = []
func createAutogeneratedXCSchemes(
schemeAutogenerationMode: SchemeAutogenerationMode,
buildMode: BuildMode,
targetResolver: TargetResolver
targetResolver: TargetResolver,
customSchemeNames: Set<String>
) throws -> [XCScheme] {
createAutogeneratedXCSchemesCalled.append(.init(
schemeAutogenerationMode: schemeAutogenerationMode,
buildMode: buildMode,
targetResolver: targetResolver
targetResolver: targetResolver,
customSchemeNames: customSchemeNames
))
return autogeneratedXCSchemes
}

let expectedCreateAutogeneratedXCSchemesCalled = [CreateAutogeneratedXCSchemesCalled(
schemeAutogenerationMode: schemeAutogenerationMode,
buildMode: buildMode,
targetResolver: targetResolver
targetResolver: targetResolver,
customSchemeNames: customSchemeNames
)]

// MARK: createXCSharedData()
Expand Down