Files
XcodeGen/Sources/ProjectSpec/SpecParsingError.swift
T
Ryu 53cb43cb66 Add validation to ensure that settings.configs values are dictionaries, in order to prevent misuse (#1547)
* Add validation to ensure settings.configs values are dictionaries to prevent misuse

* Add tests for invalid settings.configs value formats

* Replaced with filter and split into a function

* Rename invalidConfigsFormat to invalidConfigsMappingFormat

* Add comments to explain invalid  fixture

* Rename test fixture

* Update CHANGELOG.md

* Correct grammer

* Use KeyPath instead of closure

* Rename validateMappingStyleInConfig to extractValidConfigs

* Add a document comment for extractValidConfigs(from:)

* Use old testing api and remove EquatableErrorBox

* Rename test case to use "mapping" instead of "dictionary"

* Add ValidSettingsExtractor to encapsulate the logic for converting a dictionary to Settings

* Add settings validation for both Target and AggregateTarget

* Add tests for invalid settings.configs in Target and AggregateTarget

* Add document comments for ValidSettingsExtractor

* Rename ValidSettingsExtractor to BuildSettingsExtractor

* Add settings validation for settingGroups

* Add tests for settingGroups

* Rename extract to parse

* Refactor

* Update Tests/ProjectSpecTests/InvalidConfigsFormatTests.swift

---------

Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
2025-06-07 00:23:21 +10:00

55 lines
2.5 KiB
Swift

import Foundation
public enum SpecParsingError: Error, CustomStringConvertible {
case unknownTargetType(String)
case unknownTargetPlatform(String)
case invalidDependency([String: Any])
case unknownPackageRequirement([String: Any])
case invalidSourceBuildPhase(String)
case invalidTargetReference(String)
case invalidTargetPlatformAsArray
case invalidVersion(String)
case unknownBreakpointType(String)
case unknownBreakpointScope(String)
case unknownBreakpointStopOnStyle(String)
case unknownBreakpointActionType(String)
case unknownBreakpointActionConveyanceType(String)
case unknownBreakpointActionSoundName(String)
case invalidConfigsMappingFormat(keys: Set<String>)
public var description: String {
switch self {
case let .unknownTargetType(type):
return "Unknown Target type: \(type)"
case let .unknownTargetPlatform(platform):
return "Unknown Target platform: \(platform)"
case let .invalidDependency(dependency):
return "Unknown Target dependency: \(dependency)"
case let .invalidSourceBuildPhase(error):
return "Invalid Source Build Phase: \(error)"
case let .invalidTargetReference(targetReference):
return "Invalid Target Reference Syntax: \(targetReference)"
case .invalidTargetPlatformAsArray:
return "Invalid Target platform: Array not allowed with supported destinations"
case let .invalidVersion(version):
return "Invalid version: \(version)"
case let .unknownPackageRequirement(package):
return "Unknown package requirement: \(package)"
case let .unknownBreakpointType(type):
return "Unknown Breakpoint type: \(type)"
case let .unknownBreakpointScope(scope):
return "Unknown Breakpoint scope: \(scope)"
case let .unknownBreakpointStopOnStyle(stopOnStyle):
return "Unknown Breakpoint stopOnStyle: \(stopOnStyle)"
case let .unknownBreakpointActionType(type):
return "Unknown Breakpoint Action type: \(type)"
case let .unknownBreakpointActionConveyanceType(type):
return "Unknown Breakpoint Action conveyance type: \(type)"
case let .unknownBreakpointActionSoundName(name):
return "Unknown Breakpoint Action sound name: \(name)"
case let .invalidConfigsMappingFormat(keys):
return "Invalid format: The value for \"\(keys.sorted().joined(separator: ", "))\" in `configs` must be mapping format"
}
}
}