Skip to content

Commit 17293e6

Browse files
committed
Extract MockDependencyGraph to separate file
1 parent 2f283f0 commit 17293e6

File tree

2 files changed

+53
-39
lines changed

2 files changed

+53
-39
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
This source file is part of the Swift.org open source project
3+
4+
Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
5+
Licensed under Apache License v2.0 with Runtime Library Exception
6+
7+
See http://swift.org/LICENSE.txt for license information
8+
See http://swift.org/CONTRIBUTORS.txt for Swift project authors
9+
*/
10+
import XCTest
11+
12+
import PackageGraph
13+
import TSCBasic
14+
import struct TSCUtility.Version
15+
16+
public struct MockDependencyGraph {
17+
public let name: String
18+
public let constraints: [MockPackageConstraint]
19+
public let containers: [MockPackageContainer]
20+
public let result: [String: Version]
21+
22+
public init(_ json: JSON) {
23+
guard case .dictionary(let dict) = json else { fatalError() }
24+
guard case .string(let name)? = dict["name"] else { fatalError() }
25+
guard case .array(let constraints)? = dict["constraints"] else { fatalError() }
26+
guard case .array(let containers)? = dict["containers"] else { fatalError() }
27+
guard case .dictionary(let result)? = dict["result"] else { fatalError() }
28+
29+
self.result = Dictionary(uniqueKeysWithValues: result.map { value in
30+
let (container, version) = value
31+
guard case .string(let str) = version else { fatalError() }
32+
return (container.lowercased(), Version(string: str)!)
33+
})
34+
self.name = name
35+
self.constraints = constraints.map(PackageContainerConstraint.init(json:))
36+
self.containers = containers.map(MockPackageContainer.init(json:))
37+
}
38+
39+
public func checkResult(
40+
_ output: [(container: String, version: Version)],
41+
file: StaticString = #file,
42+
line: UInt = #line
43+
) {
44+
var result = self.result
45+
for item in output {
46+
XCTAssertEqual(result[item.container], item.version, file: file, line: line)
47+
result[item.container] = nil
48+
}
49+
if !result.isEmpty {
50+
XCTFail("Unchecked containers: \(result)", file: file, line: line)
51+
}
52+
}
53+
}

Sources/SPMTestSupport/MockDependencyResolver.swift

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -211,42 +211,3 @@ public struct MockPackageContainerProvider: PackageContainerProvider {
211211
}
212212
}
213213
}
214-
215-
public struct MockDependencyGraph {
216-
public let name: String
217-
public let constraints: [MockPackageConstraint]
218-
public let containers: [MockPackageContainer]
219-
public let result: [String: Version]
220-
221-
public init(_ json: JSON) {
222-
guard case .dictionary(let dict) = json else { fatalError() }
223-
guard case .string(let name)? = dict["name"] else { fatalError() }
224-
guard case .array(let constraints)? = dict["constraints"] else { fatalError() }
225-
guard case .array(let containers)? = dict["containers"] else { fatalError() }
226-
guard case .dictionary(let result)? = dict["result"] else { fatalError() }
227-
228-
self.result = Dictionary(uniqueKeysWithValues: result.map { value in
229-
let (container, version) = value
230-
guard case .string(let str) = version else { fatalError() }
231-
return (container.lowercased(), Version(string: str)!)
232-
})
233-
self.name = name
234-
self.constraints = constraints.map(PackageContainerConstraint.init(json:))
235-
self.containers = containers.map(MockPackageContainer.init(json:))
236-
}
237-
238-
public func checkResult(
239-
_ output: [(container: String, version: Version)],
240-
file: StaticString = #file,
241-
line: UInt = #line
242-
) {
243-
var result = self.result
244-
for item in output {
245-
XCTAssertEqual(result[item.container], item.version, file: file, line: line)
246-
result[item.container] = nil
247-
}
248-
if !result.isEmpty {
249-
XCTFail("Unchecked containers: \(result)", file: file, line: line)
250-
}
251-
}
252-
}

0 commit comments

Comments
 (0)