@@ -23,77 +23,133 @@ final class PinsStoreTests: XCTestCase {
23
23
let v1 : Version = " 1.0.0 "
24
24
25
25
func testBasics( ) throws {
26
- let fooPath = AbsolutePath ( " /foo " )
27
- let barPath = AbsolutePath ( " /bar " )
28
- let foo = PackageIdentity ( path: fooPath)
29
- let bar = PackageIdentity ( path: barPath)
30
- //let fooRepo = RepositorySpecifier(url: fooPath.pathString)
31
- //let barRepo = RepositorySpecifier(url: barPath.pathString)
32
- let revision = " 81513c8fd220cf1ed1452b98060cd80d3725c5b7 "
33
- let fooRef = PackageReference . localSourceControl ( identity: foo, path: fooPath)
34
- let barRef = PackageReference . localSourceControl ( identity: bar, path: barPath)
35
-
36
- let state = PinsStore . PinState. version ( v1, revision: revision)
37
-
38
26
let fs = InMemoryFileSystem ( )
39
27
let pinsFile = AbsolutePath ( " /pinsfile.txt " )
40
- var store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
41
- // Pins file should not be created right now.
42
- XCTAssert ( !fs. exists ( pinsFile) )
43
- XCTAssert ( store. pins. map { $0} . isEmpty)
44
28
45
- store. pin ( packageRef: fooRef, state: state)
46
- try store. saveState ( toolsVersion: ToolsVersion . currentToolsVersion)
29
+ do {
30
+ let fooPath = AbsolutePath ( " /foo " )
31
+ let foo = PackageIdentity ( path: fooPath)
32
+ let fooRef = PackageReference . localSourceControl ( identity: foo, path: fooPath)
33
+
34
+ let barPath = AbsolutePath ( " /bar " )
35
+ let bar = PackageIdentity ( path: barPath)
36
+ let barRef = PackageReference . localSourceControl ( identity: bar, path: barPath)
37
+
38
+ var store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
39
+
40
+ // Pins file should not be created right now.
41
+ XCTAssert ( !fs. exists ( pinsFile) )
42
+ XCTAssert ( store. pins. map { $0} . isEmpty)
43
+
44
+ let revision = UUID ( ) . uuidString
45
+ let state = PinsStore . PinState. version ( v1, revision: revision)
46
+ store. pin ( packageRef: fooRef, state: state)
47
+ try store. saveState ( toolsVersion: ToolsVersion . currentToolsVersion)
47
48
48
- XCTAssert ( fs. exists ( pinsFile) )
49
+ XCTAssert ( fs. exists ( pinsFile) )
50
+
51
+ // Load the store again from disk.
52
+ let store2 = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
53
+ // Test basics on the store.
54
+ for s in [ store, store2] {
55
+ XCTAssert ( s. pins. map { $0} . count == 1 )
56
+ XCTAssertEqual ( s. pinsMap [ bar] , nil )
57
+ let fooPin = s. pinsMap [ foo] !
58
+ XCTAssertEqual ( fooPin. packageRef, fooRef)
59
+ XCTAssertEqual ( fooPin. state, . version( v1, revision: revision) )
60
+ XCTAssertEqual ( fooPin. state. description, v1. description)
61
+ }
62
+
63
+ // We should be able to pin again.
64
+ store. pin ( packageRef: fooRef, state: state)
65
+ store. pin (
66
+ packageRef: fooRef,
67
+ state: . version( " 1.0.2 " , revision: revision)
68
+ )
69
+ store. pin ( packageRef: barRef, state: state)
70
+ try store. saveState ( toolsVersion: ToolsVersion . currentToolsVersion)
71
+
72
+ store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
73
+ XCTAssert ( store. pins. map { $0} . count == 2 )
49
74
50
- // Load the store again from disk.
51
- let store2 = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
52
- // Test basics on the store.
53
- for s in [ store, store2] {
54
- XCTAssert ( s. pins. map { $0} . count == 1 )
55
- XCTAssertEqual ( s. pinsMap [ bar] , nil )
56
- let fooPin = s. pinsMap [ foo] !
57
- XCTAssertEqual ( fooPin. packageRef, fooRef)
58
- XCTAssertEqual ( fooPin. state, . version( v1, revision: revision) )
59
- XCTAssertEqual ( fooPin. state. description, v1. description)
60
75
}
61
76
62
- // We should be able to pin again.
63
- store. pin ( packageRef: fooRef, state: state)
64
- store. pin (
65
- packageRef: fooRef,
66
- state: . version( " 1.0.2 " , revision: revision)
67
- )
68
- store. pin ( packageRef: barRef, state: state)
69
- try store. saveState ( toolsVersion: ToolsVersion . currentToolsVersion)
77
+ // Test source control version pin.
78
+
79
+ do {
80
+ let path = AbsolutePath ( " /foo " )
81
+ let identity = PackageIdentity ( path: path)
82
+ let revision = UUID ( ) . uuidString
83
+
84
+ var store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
85
+ store. pin (
86
+ packageRef: . localSourceControl( identity: identity, path: path) ,
87
+ state: . version( " 1.2.3 " , revision: revision)
88
+ )
89
+ try store. saveState ( toolsVersion: ToolsVersion . currentToolsVersion)
90
+ store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
91
+
92
+ let pin = store. pinsMap [ identity] !
93
+ XCTAssertEqual ( pin. state, . version( " 1.2.3 " , revision: revision) )
94
+ XCTAssertEqual ( pin. state. description, " 1.2.3 " )
95
+ }
70
96
71
- store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
72
- XCTAssert ( store. pins. map { $0} . count == 2 )
97
+ // Test source control branch pin.
73
98
74
- // Test branch pin.
75
99
do {
100
+ let path = AbsolutePath ( " /foo " )
101
+ let identity = PackageIdentity ( path: path)
102
+ let revision = UUID ( ) . uuidString
103
+
104
+ var store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
76
105
store. pin (
77
- packageRef: barRef ,
106
+ packageRef: . localSourceControl ( identity : identity , path : path ) ,
78
107
state: . branch( name: " develop " , revision: revision)
79
108
)
80
109
try store. saveState ( toolsVersion: ToolsVersion . currentToolsVersion)
81
110
store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
82
111
83
- let barPin = store. pinsMap [ bar] !
84
- XCTAssertEqual ( barPin. state, . branch( name: " develop " , revision: revision) )
85
- XCTAssertEqual ( barPin. state. description, " develop " )
112
+ let pin = store. pinsMap [ identity] !
113
+ XCTAssertEqual ( pin. state, . branch( name: " develop " , revision: revision) )
114
+ XCTAssertEqual ( pin. state. description, " develop " )
115
+ }
116
+
117
+ // Test source control revision pin.
118
+
119
+ do {
120
+ let path = AbsolutePath ( " /foo " )
121
+ let identity = PackageIdentity ( path: path)
122
+ let revision = UUID ( ) . uuidString
123
+
124
+ var store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
125
+ store. pin (
126
+ packageRef: . localSourceControl( identity: identity, path: path) ,
127
+ state: . revision( revision)
128
+ )
129
+ try store. saveState ( toolsVersion: ToolsVersion . currentToolsVersion)
130
+ store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
131
+
132
+ let pin = store. pinsMap [ identity] !
133
+ XCTAssertEqual ( pin. state, . revision( revision) )
134
+ XCTAssertEqual ( pin. state. description, revision)
86
135
}
87
136
88
- // Test revision pin.
137
+ // Test registry pin.
138
+
89
139
do {
90
- store. pin ( packageRef: barRef, state: . revision( revision) )
140
+ let identity = PackageIdentity . plain ( " baz.baz " ) // FIXME: use scope identifier
141
+
142
+ var store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
143
+ store. pin (
144
+ packageRef: . registry( identity: identity) ,
145
+ state: . version( " 1.2.3 " , revision: . none)
146
+ )
91
147
try store. saveState ( toolsVersion: ToolsVersion . currentToolsVersion)
92
148
store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
93
149
94
- let barPin = store. pinsMap [ bar ] !
95
- XCTAssertEqual ( barPin . state, . revision ( revision) )
96
- XCTAssertEqual ( barPin . state. description, revision )
150
+ let pin = store. pinsMap [ identity ] !
151
+ XCTAssertEqual ( pin . state, . version ( " 1.2.3 " , revision: . none ) )
152
+ XCTAssertEqual ( pin . state. description, " 1.2.3 " )
97
153
}
98
154
}
99
155
@@ -149,7 +205,6 @@ final class PinsStoreTests: XCTestCase {
149
205
" kind " : " remoteSourceControl " ,
150
206
" location " : " https://github.com/something/Clang_C.git " ,
151
207
" state " : {
152
- " branch " : null,
153
208
" revision " : " 90a9574276f0fd17f02f58979423c3fd4d73b59e " ,
154
209
" version " : " 1.0.2 " ,
155
210
}
@@ -159,18 +214,25 @@ final class PinsStoreTests: XCTestCase {
159
214
" kind " : " remoteSourceControl " ,
160
215
" location " : " https://github.com/something/Commandant.git " ,
161
216
" state " : {
162
- " branch " : null,
163
217
" revision " : " c281992c31c3f41c48b5036c5a38185eaec32626 " ,
164
218
" version " : " 0.12.0 "
165
219
}
220
+ },
221
+ {
222
+ " identity " : " scope.package " ,
223
+ " kind " : " registry " ,
224
+ " location " : " " ,
225
+ " state " : {
226
+ " version " : " 0.12.0 "
227
+ }
166
228
}
167
229
]
168
230
}
169
231
"""
170
232
)
171
233
172
234
let store = try PinsStore ( pinsFile: pinsFile, workingDirectory: . root, fileSystem: fs, mirrors: . init( ) )
173
- XCTAssertEqual ( store. pinsMap. keys. map { $0. description } . sorted ( ) , [ " clang_c " , " commandant " ] )
235
+ XCTAssertEqual ( store. pinsMap. keys. map { $0. description } . sorted ( ) , [ " clang_c " , " commandant " , " scope.package " ] )
174
236
}
175
237
176
238
func testLoadingUnknownSchemaVersion( ) throws {
0 commit comments