X Tutup
Skip to content

Commit fe693c7

Browse files
committed
add package validation
1 parent 8050e6b commit fe693c7

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

Sources/ProjectSpec/SpecValidation.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,10 @@ extension Project {
156156
errors.append(.invalidSDKDependency(target: target.name, dependency: dependency.reference))
157157
}
158158
}
159+
case .package:
160+
if packages[dependency.reference] == nil {
161+
errors.append(.invalidSwiftPackage(name: dependency.reference, target: target.name))
162+
}
159163
default: break
160164
}
161165
}

Sources/ProjectSpec/SpecValidationError.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public struct SpecValidationError: Error, CustomStringConvertible {
1818
case invalidTargetSchemeTest(target: String, testTarget: String)
1919
case invalidSchemeTarget(scheme: String, target: String)
2020
case invalidSchemeConfig(scheme: String, config: String)
21+
case invalidSwiftPackage(name: String, target: String)
2122
case invalidConfigFile(configFile: String, config: String)
2223
case invalidBuildSettingConfig(String)
2324
case invalidSettingsGroup(String)
@@ -61,6 +62,8 @@ public struct SpecValidationError: Error, CustomStringConvertible {
6162
return "Invalid file group \(group.quoted)"
6263
case let .invalidConfigFileConfig(config):
6364
return "Config file has invalid config \(config.quoted)"
65+
case let .invalidSwiftPackage(name, target):
66+
return "Target \(target.quoted) has an invalid package dependency \(name.quoted)"
6467
case let .missingConfigForTargetScheme(target, configType):
6568
return "Target \(target.quoted) is missing a config of type \(configType.rawValue) to generate its scheme"
6669
case let .missingDefaultConfig(name):

Tests/XcodeGenKitTests/ProjectSpecTests.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,14 +134,18 @@ class ProjectSpecTests: XCTestCase {
134134
settings: invalidSettings,
135135
configFiles: ["invalidConfig": "invalidConfigFile"],
136136
sources: ["invalidSource"],
137-
dependencies: [Dependency(type: .target, reference: "invalidDependency")],
137+
dependencies: [
138+
Dependency(type: .target, reference: "invalidDependency"),
139+
Dependency(type: .package(product: nil), reference: "invalidPackage")
140+
],
138141
preBuildScripts: [BuildScript(script: .path("invalidPreBuildScript"), name: "preBuildScript1")],
139142
postCompileScripts: [BuildScript(script: .path("invalidPostCompileScript"))],
140143
postBuildScripts: [BuildScript(script: .path("invalidPostBuildScript"))],
141144
scheme: TargetScheme(testTargets: ["invalidTarget"])
142145
)]
143146

144147
try expectValidationError(project, .invalidTargetDependency(target: "target1", dependency: "invalidDependency"))
148+
try expectValidationError(project, .invalidSwiftPackage(name: "invalidPackage", target: "target1"))
145149
try expectValidationError(project, .invalidTargetConfigFile(target: "target1", configFile: "invalidConfigFile", config: "invalidConfig"))
146150
try expectValidationError(project, .invalidTargetSchemeTest(target: "target1", testTarget: "invalidTarget"))
147151
try expectValidationError(project, .invalidTargetSource(target: "target1", source: "invalidSource"))

0 commit comments

Comments
 (0)
X Tutup