Fix tests
This commit is contained in:
parent
57a47ae559
commit
87e19af3ab
|
@ -3,7 +3,9 @@ import Foundation
|
|||
func dumpIfNeeded<E: Encodable>(_ entity: E) {
|
||||
if CommandLine.argc > 0 {
|
||||
if CommandLine.arguments.contains("--dump") {
|
||||
let data = try! JSONEncoder().encode(entity)
|
||||
let encoder = JSONEncoder()
|
||||
encoder.keyEncodingStrategy = .convertToSnakeCase
|
||||
let data = try! encoder.encode(entity)
|
||||
let string = String(data: data, encoding: .utf8)!
|
||||
print(string)
|
||||
}
|
||||
|
|
|
@ -18,5 +18,4 @@ public class Headers: Codable {
|
|||
self.private = `private`
|
||||
self.project = project
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,12 +3,11 @@ import Foundation
|
|||
// MARK: - TargetDependency
|
||||
|
||||
public enum TargetDependency: Codable {
|
||||
|
||||
case target(name: String)
|
||||
case project(target: String, path: String)
|
||||
case framework(path: String)
|
||||
case library(path: String, publicHeaders: String, swiftModuleMap: String?)
|
||||
|
||||
|
||||
public var typeName: String {
|
||||
switch self {
|
||||
case .target:
|
||||
|
@ -21,17 +20,15 @@ public enum TargetDependency: Codable {
|
|||
return "library"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - TargetDependency (Coding)
|
||||
|
||||
extension TargetDependency {
|
||||
|
||||
public enum CodingError: Error {
|
||||
case unknownType(String)
|
||||
}
|
||||
|
||||
|
||||
public enum CodingKeys: String, CodingKey {
|
||||
case type
|
||||
case name
|
||||
|
@ -40,55 +37,54 @@ extension TargetDependency {
|
|||
case publicHeaders
|
||||
case swiftModuleMap
|
||||
}
|
||||
|
||||
|
||||
public init(from decoder: Decoder) throws {
|
||||
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||
|
||||
|
||||
let type = try container.decode(String.self, forKey: .type)
|
||||
|
||||
|
||||
switch type {
|
||||
case "target":
|
||||
self = .target(name: try container.decode(String.self, forKey: .name))
|
||||
|
||||
|
||||
case "project":
|
||||
self = .project(
|
||||
target: try container.decode(String.self, forKey: .target),
|
||||
path: try container.decode(String.self, forKey: .path)
|
||||
)
|
||||
|
||||
|
||||
case "framework":
|
||||
self = .framework(path: try container.decode(String.self, forKey: .path))
|
||||
|
||||
|
||||
case "library":
|
||||
self = .library(
|
||||
path: try container.decode(String.self, forKey: .path),
|
||||
publicHeaders: try container.decode(String.self, forKey: .publicHeaders),
|
||||
swiftModuleMap: try container.decodeIfPresent(String.self, forKey: .swiftModuleMap)
|
||||
)
|
||||
|
||||
|
||||
default:
|
||||
throw CodingError.unknownType(type)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||
|
||||
try container.encode(self.typeName, forKey: .type)
|
||||
|
||||
|
||||
try container.encode(typeName, forKey: .type)
|
||||
|
||||
switch self {
|
||||
case .target(name: let name):
|
||||
case let .target(name: name):
|
||||
try container.encode(name, forKey: .name)
|
||||
case .project(target: let target, path: let path):
|
||||
case let .project(target: target, path: path):
|
||||
try container.encode(target, forKey: .target)
|
||||
try container.encode(path, forKey: .path)
|
||||
case .framework(path: let path):
|
||||
case let .framework(path: path):
|
||||
try container.encode(path, forKey: .path)
|
||||
case .library(path: let path, publicHeaders: let publicHeaders, swiftModuleMap: let swiftModuleMap):
|
||||
case let .library(path: path, publicHeaders: publicHeaders, swiftModuleMap: swiftModuleMap):
|
||||
try container.encode(path, forKey: .path)
|
||||
try container.encode(publicHeaders, forKey: .publicHeaders)
|
||||
try container.encodeIfPresent(swiftModuleMap, forKey: .swiftModuleMap)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,12 +3,11 @@ import Foundation
|
|||
// MARK: - Workspace
|
||||
|
||||
public class Workspace: Codable {
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case name
|
||||
case projects = "project"
|
||||
}
|
||||
|
||||
|
||||
public let name: String
|
||||
public let projects: [String]
|
||||
public init(name: String,
|
||||
|
|
|
@ -5,19 +5,19 @@ import XCTest
|
|||
final class ProductTests: XCTestCase {
|
||||
func test_toJSON() {
|
||||
assertCodableEqualToJson([Product.app], "[\"app\"]")
|
||||
assertCodableEqualToJson([Product.staticLibrary],"[\"staticLibrary\"]")
|
||||
assertCodableEqualToJson([Product.dynamicLibrary],"[\"dynamicLibrary\"]")
|
||||
assertCodableEqualToJson([Product.framework],"[\"framework\"]")
|
||||
assertCodableEqualToJson([Product.unitTests],"[\"unitTests\"]")
|
||||
assertCodableEqualToJson([Product.uiTests],"[\"uiTests\"]")
|
||||
assertCodableEqualToJson([Product.appExtension],"[\"appExtension\"]")
|
||||
assertCodableEqualToJson([Product.watchApp],"[\"watchApp\"]")
|
||||
assertCodableEqualToJson([Product.watch2App],"[\"watch2App\"]")
|
||||
assertCodableEqualToJson([Product.watchExtension],"[\"watchExtension\"]")
|
||||
assertCodableEqualToJson([Product.watch2Extension],"[\"watch2Extension\"]")
|
||||
assertCodableEqualToJson([Product.tvExtension],"[\"tvExtension\"]")
|
||||
assertCodableEqualToJson([Product.messagesApplication],"[\"messagesApplication\"]")
|
||||
assertCodableEqualToJson([Product.messagesExtension],"[\"messagesExtension\"]")
|
||||
assertCodableEqualToJson([Product.stickerPack],"[\"stickerPack\"]")
|
||||
assertCodableEqualToJson([Product.staticLibrary], "[\"staticLibrary\"]")
|
||||
assertCodableEqualToJson([Product.dynamicLibrary], "[\"dynamicLibrary\"]")
|
||||
assertCodableEqualToJson([Product.framework], "[\"framework\"]")
|
||||
assertCodableEqualToJson([Product.unitTests], "[\"unitTests\"]")
|
||||
assertCodableEqualToJson([Product.uiTests], "[\"uiTests\"]")
|
||||
assertCodableEqualToJson([Product.appExtension], "[\"appExtension\"]")
|
||||
assertCodableEqualToJson([Product.watchApp], "[\"watchApp\"]")
|
||||
assertCodableEqualToJson([Product.watch2App], "[\"watch2App\"]")
|
||||
assertCodableEqualToJson([Product.watchExtension], "[\"watchExtension\"]")
|
||||
assertCodableEqualToJson([Product.watch2Extension], "[\"watch2Extension\"]")
|
||||
assertCodableEqualToJson([Product.tvExtension], "[\"tvExtension\"]")
|
||||
assertCodableEqualToJson([Product.messagesApplication], "[\"messagesApplication\"]")
|
||||
assertCodableEqualToJson([Product.messagesExtension], "[\"messagesExtension\"]")
|
||||
assertCodableEqualToJson([Product.stickerPack], "[\"stickerPack\"]")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,6 @@ func assertCodableEqualToJson<C: Codable>(_ subject: C, _ json: String) {
|
|||
encoder.keyEncodingStrategy = .convertToSnakeCase
|
||||
let jsonData = try! encoder.encode(decoded)
|
||||
let subjectData = try! encoder.encode(subject)
|
||||
|
||||
|
||||
XCTAssert(jsonData == subjectData, "JSON does not match the encoded \(String(describing: subject))")
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue