13
13
import XCTest
14
14
15
15
import PackageGraph
16
- import PackageModel
16
+ @ testable import PackageModel
17
17
18
18
private extension ResolvedTarget {
19
- init ( name: String , deps: ResolvedTarget ... , conditions: [ PackageCondition ] = [ ] ) {
19
+ init ( packageIdentity : String , name: String , deps: ResolvedTarget ... , conditions: [ PackageCondition ] = [ ] ) {
20
20
self . init (
21
+ packageIdentity: . init( packageIdentity) ,
21
22
underlying: SwiftTarget (
22
23
name: name,
23
24
type: . library,
@@ -28,7 +29,7 @@ private extension ResolvedTarget {
28
29
swiftVersion: . v4,
29
30
usesUnsafeFlags: false
30
31
) ,
31
- dependencies: deps. map { . target( $0, conditions: [ ] ) } ,
32
+ dependencies: deps. map { . target( $0, conditions: conditions ) } ,
32
33
defaultLocalization: nil ,
33
34
supportedPlatforms: [ ] ,
34
35
platformVersionProvider: . init( implementation: . minimumDeploymentTargetDefault)
@@ -38,54 +39,54 @@ private extension ResolvedTarget {
38
39
39
40
class TargetDependencyTests : XCTestCase {
40
41
func test1( ) throws {
41
- let t1 = ResolvedTarget ( name: " t1 " )
42
- let t2 = ResolvedTarget ( name: " t2 " , deps: t1)
43
- let t3 = ResolvedTarget ( name: " t3 " , deps: t2)
42
+ let t1 = ResolvedTarget ( packageIdentity : " pkg " , name: " t1 " )
43
+ let t2 = ResolvedTarget ( packageIdentity : " pkg " , name: " t2 " , deps: t1)
44
+ let t3 = ResolvedTarget ( packageIdentity : " pkg " , name: " t3 " , deps: t2)
44
45
45
46
XCTAssertEqual ( try t3. recursiveTargetDependencies ( ) , [ t2, t1] )
46
47
XCTAssertEqual ( try t2. recursiveTargetDependencies ( ) , [ t1] )
47
48
}
48
49
49
50
func test2( ) throws {
50
- let t1 = ResolvedTarget ( name: " t1 " )
51
- let t2 = ResolvedTarget ( name: " t2 " , deps: t1)
52
- let t3 = ResolvedTarget ( name: " t3 " , deps: t2, t1)
53
- let t4 = ResolvedTarget ( name: " t4 " , deps: t2, t3, t1)
51
+ let t1 = ResolvedTarget ( packageIdentity : " pkg " , name: " t1 " )
52
+ let t2 = ResolvedTarget ( packageIdentity : " pkg " , name: " t2 " , deps: t1)
53
+ let t3 = ResolvedTarget ( packageIdentity : " pkg " , name: " t3 " , deps: t2, t1)
54
+ let t4 = ResolvedTarget ( packageIdentity : " pkg " , name: " t4 " , deps: t2, t3, t1)
54
55
55
56
XCTAssertEqual ( try t4. recursiveTargetDependencies ( ) , [ t3, t2, t1] )
56
57
XCTAssertEqual ( try t3. recursiveTargetDependencies ( ) , [ t2, t1] )
57
58
XCTAssertEqual ( try t2. recursiveTargetDependencies ( ) , [ t1] )
58
59
}
59
60
60
61
func test3( ) throws {
61
- let t1 = ResolvedTarget ( name: " t1 " )
62
- let t2 = ResolvedTarget ( name: " t2 " , deps: t1)
63
- let t3 = ResolvedTarget ( name: " t3 " , deps: t2, t1)
64
- let t4 = ResolvedTarget ( name: " t4 " , deps: t1, t2, t3)
62
+ let t1 = ResolvedTarget ( packageIdentity : " pkg " , name: " t1 " )
63
+ let t2 = ResolvedTarget ( packageIdentity : " pkg " , name: " t2 " , deps: t1)
64
+ let t3 = ResolvedTarget ( packageIdentity : " pkg " , name: " t3 " , deps: t2, t1)
65
+ let t4 = ResolvedTarget ( packageIdentity : " pkg " , name: " t4 " , deps: t1, t2, t3)
65
66
66
67
XCTAssertEqual ( try t4. recursiveTargetDependencies ( ) , [ t3, t2, t1] )
67
68
XCTAssertEqual ( try t3. recursiveTargetDependencies ( ) , [ t2, t1] )
68
69
XCTAssertEqual ( try t2. recursiveTargetDependencies ( ) , [ t1] )
69
70
}
70
71
71
72
func test4( ) throws {
72
- let t1 = ResolvedTarget ( name: " t1 " )
73
- let t2 = ResolvedTarget ( name: " t2 " , deps: t1)
74
- let t3 = ResolvedTarget ( name: " t3 " , deps: t2)
75
- let t4 = ResolvedTarget ( name: " t4 " , deps: t3)
73
+ let t1 = ResolvedTarget ( packageIdentity : " pkg " , name: " t1 " )
74
+ let t2 = ResolvedTarget ( packageIdentity : " pkg " , name: " t2 " , deps: t1)
75
+ let t3 = ResolvedTarget ( packageIdentity : " pkg " , name: " t3 " , deps: t2)
76
+ let t4 = ResolvedTarget ( packageIdentity : " pkg " , name: " t4 " , deps: t3)
76
77
77
78
XCTAssertEqual ( try t4. recursiveTargetDependencies ( ) , [ t3, t2, t1] )
78
79
XCTAssertEqual ( try t3. recursiveTargetDependencies ( ) , [ t2, t1] )
79
80
XCTAssertEqual ( try t2. recursiveTargetDependencies ( ) , [ t1] )
80
81
}
81
82
82
83
func test5( ) throws {
83
- let t1 = ResolvedTarget ( name: " t1 " )
84
- let t2 = ResolvedTarget ( name: " t2 " , deps: t1)
85
- let t3 = ResolvedTarget ( name: " t3 " , deps: t2)
86
- let t4 = ResolvedTarget ( name: " t4 " , deps: t3)
87
- let t5 = ResolvedTarget ( name: " t5 " , deps: t2)
88
- let t6 = ResolvedTarget ( name: " t6 " , deps: t5, t4)
84
+ let t1 = ResolvedTarget ( packageIdentity : " pkg " , name: " t1 " )
85
+ let t2 = ResolvedTarget ( packageIdentity : " pkg " , name: " t2 " , deps: t1)
86
+ let t3 = ResolvedTarget ( packageIdentity : " pkg " , name: " t3 " , deps: t2)
87
+ let t4 = ResolvedTarget ( packageIdentity : " pkg " , name: " t4 " , deps: t3)
88
+ let t5 = ResolvedTarget ( packageIdentity : " pkg " , name: " t5 " , deps: t2)
89
+ let t6 = ResolvedTarget ( packageIdentity : " pkg " , name: " t6 " , deps: t5, t4)
89
90
90
91
// precise order is not important, but it is important that the following are true
91
92
let t6rd = try t6. recursiveTargetDependencies ( )
@@ -102,12 +103,12 @@ class TargetDependencyTests: XCTestCase {
102
103
}
103
104
104
105
func test6( ) throws {
105
- let t1 = ResolvedTarget ( name: " t1 " )
106
- let t2 = ResolvedTarget ( name: " t2 " , deps: t1)
107
- let t3 = ResolvedTarget ( name: " t3 " , deps: t2)
108
- let t4 = ResolvedTarget ( name: " t4 " , deps: t3)
109
- let t5 = ResolvedTarget ( name: " t5 " , deps: t2)
110
- let t6 = ResolvedTarget ( name: " t6 " , deps: t4, t5) // same as above, but these two swapped
106
+ let t1 = ResolvedTarget ( packageIdentity : " pkg " , name: " t1 " )
107
+ let t2 = ResolvedTarget ( packageIdentity : " pkg " , name: " t2 " , deps: t1)
108
+ let t3 = ResolvedTarget ( packageIdentity : " pkg " , name: " t3 " , deps: t2)
109
+ let t4 = ResolvedTarget ( packageIdentity : " pkg " , name: " t4 " , deps: t3)
110
+ let t5 = ResolvedTarget ( packageIdentity : " pkg " , name: " t5 " , deps: t2)
111
+ let t6 = ResolvedTarget ( packageIdentity : " pkg " , name: " t6 " , deps: t4, t5) // same as above, but these two swapped
111
112
112
113
// precise order is not important, but it is important that the following are true
113
114
let t6rd = try t6. recursiveTargetDependencies ( )
@@ -124,10 +125,19 @@ class TargetDependencyTests: XCTestCase {
124
125
}
125
126
126
127
func testConditions( ) throws {
127
- let t1 = ResolvedTarget ( name: " t1 " )
128
- let t2 = ResolvedTarget ( name: " t2 " , deps: t1)
129
- let t2Conditions = ResolvedTarget ( name: " t2 " , deps: t1, conditions: [ . init( platforms: [ . linux] ) ] )
128
+ let t1 = ResolvedTarget ( packageIdentity: " pkg " , name: " t1 " )
129
+ let t2 = ResolvedTarget ( packageIdentity: " pkg " , name: " t2 " , deps: t1)
130
+ let t2NoConditions = ResolvedTarget ( packageIdentity: " pkg " , name: " t2 " , deps: t1)
131
+ let t2WithConditions = ResolvedTarget (
132
+ packageIdentity: " pkg " ,
133
+ name: " t2 " ,
134
+ deps: t1,
135
+ conditions: [ . init( platforms: [ . linux] ) ]
136
+ )
130
137
131
- XCTAssertEqual ( t2, t2Conditions)
138
+ // FIXME: we should test for actual `t2` and `t2NoConditions` equality, but `SwiftTarget` is a reference type,
139
+ // which currently breaks this test, and it shouldn't
140
+ XCTAssertEqual ( t2. dependencies, t2NoConditions. dependencies)
141
+ XCTAssertEqual ( t2. dependencies, t2WithConditions. dependencies)
132
142
}
133
143
}
0 commit comments