Skip to content

Commit

Permalink
#1526 check for unknown keys
Browse files Browse the repository at this point in the history
  • Loading branch information
wtholliday committed Jan 16, 2025
1 parent 5644662 commit 09a2ff7
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 0 deletions.
8 changes: 8 additions & 0 deletions Sources/ProjectSpec/Project.swift
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,14 @@ extension Project {
public init(basePath: Path = "", jsonDictionary: JSONDictionary) throws {
self.basePath = basePath

let validKeys = Set(["name", "settings", "settingGroups", "settingPresets", "configs", "targets", "aggregateTargets", "projectReferences", "schemes", "breakpoints", "fileGroups", "configFiles", "attributes", "breakpoints", "packages", "localPackages", "options", "targetTemplates", "include", "templates", "schemeTemplates"])

for key in jsonDictionary.keys {
if !validKeys.contains(key) {
throw SpecValidationError(errors: [.unknownDictionaryKey(key)])
}
}

let jsonDictionary = Project.resolveProject(jsonDictionary: jsonDictionary)

name = try jsonDictionary.json(atKeyPath: "name")
Expand Down
3 changes: 3 additions & 0 deletions Sources/ProjectSpec/SpecValidationError.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public struct SpecValidationError: Error, CustomStringConvertible {
case multipleDefaultTestPlans
case duplicateDependencies(target: String, dependencyReference: String)
case invalidPluginPackageReference(plugin: String, package: String)
case unknownDictionaryKey(String)

public var description: String {
switch self {
Expand Down Expand Up @@ -109,6 +110,8 @@ public struct SpecValidationError: Error, CustomStringConvertible {
return "Target \(target.quoted) has the dependency \(dependencyReference.quoted) multiple times"
case let .invalidPluginPackageReference(plugin, package):
return "Plugin \(plugin) has invalid package reference \(package)"
case let .unknownDictionaryKey(key):
return "Unknown key \(key)"
}
}
}
Expand Down

0 comments on commit 09a2ff7

Please sign in to comment.