@@ -27,19 +27,24 @@ import TestSupport
27
27
private let sharedManifestLoader = ManifestLoader ( resources: Resources ( ) )
28
28
29
29
private class TestWorkspaceDelegate : WorkspaceDelegate {
30
+ var fetched = [ String] ( )
31
+ var cloned = [ String] ( )
32
+ /// Map of checkedout repos with key as repository and value as the reference (version or revision).
33
+ var checkedOut = [ String: String] ( )
34
+
30
35
func fetchingMissingRepositories( _ urls: Set < String > ) {
31
36
}
32
37
33
38
func fetching( repository: String ) {
34
- print ( " Fetching " + repository)
39
+ fetched . append ( repository)
35
40
}
36
41
37
42
func cloning( repository: String ) {
38
- print ( " Cloning: " + repository)
43
+ cloned . append ( repository)
39
44
}
40
45
41
46
func checkingOut( repository: String , at reference: String ) {
42
- print ( " Checking out: " + repository + " at " + reference)
47
+ checkedOut [ repository] = reference
43
48
}
44
49
}
45
50
@@ -336,6 +341,11 @@ final class WorkspaceTests: XCTestCase {
336
341
let delegate = TestWorkspaceDelegate ( )
337
342
let workspace = try Workspace ( rootPackage: path, manifestLoader: mockManifestLoader, delegate: delegate)
338
343
344
+ // Ensure delegates haven't been called yet.
345
+ XCTAssert ( delegate. fetched. isEmpty)
346
+ XCTAssert ( delegate. cloned. isEmpty)
347
+ XCTAssert ( delegate. checkedOut. isEmpty)
348
+
339
349
// Ensure we have a checkout for A.
340
350
for name in [ " A " ] {
341
351
let revision = try GitRepository ( path: AbsolutePath ( repos [ name] !. url) ) . getCurrentRevision ( )
@@ -345,6 +355,14 @@ final class WorkspaceTests: XCTestCase {
345
355
// Load the package graph.
346
356
let graph = try workspace. loadPackageGraph ( )
347
357
358
+ // Test the delegates.
359
+ XCTAssertEqual ( delegate. fetched. sorted ( ) , repos. values. map { $0. url} . sorted ( ) )
360
+ XCTAssertEqual ( delegate. cloned. sorted ( ) , repos. values. map { $0. url} . sorted ( ) )
361
+ XCTAssertEqual ( delegate. checkedOut. count, 3 )
362
+ for (_, repo) in repos {
363
+ XCTAssertEqual ( delegate. checkedOut [ repo. url] , " 1.0.0 " )
364
+ }
365
+
348
366
// Validate the graph has the correct basic structure.
349
367
XCTAssertEqual ( graph. packages. count, 4 )
350
368
XCTAssertEqual ( graph. packages. map { $0. name } . sorted ( ) , [
@@ -403,12 +421,23 @@ final class WorkspaceTests: XCTestCase {
403
421
MockManifestLoader . Key ( url: repos [ " A " ] !. url, version: " 1.0.1 " ) : aaManifest,
404
422
] )
405
423
424
+ let delegate = TestWorkspaceDelegate ( )
406
425
// Create the workspace.
407
- let workspace = try Workspace ( rootPackage: path, manifestLoader: mockManifestLoader, delegate: TestWorkspaceDelegate ( ) )
426
+ let workspace = try Workspace ( rootPackage: path, manifestLoader: mockManifestLoader, delegate: delegate)
427
+
428
+ // Ensure delegates haven't been called yet.
429
+ XCTAssert ( delegate. fetched. isEmpty)
430
+ XCTAssert ( delegate. cloned. isEmpty)
431
+ XCTAssert ( delegate. checkedOut. isEmpty)
408
432
409
433
// Load the package graph.
410
434
var graph = try workspace. loadPackageGraph ( )
411
435
436
+ // Test the delegates.
437
+ XCTAssertEqual ( delegate. fetched, [ repoPath. asString] )
438
+ XCTAssertEqual ( delegate. cloned, [ repoPath. asString] )
439
+ XCTAssertEqual ( delegate. checkedOut [ repoPath. asString] , " 1.0.0 " )
440
+
412
441
// Validate the graph has the correct basic structure.
413
442
XCTAssertEqual ( graph. packages. count, 2 )
414
443
XCTAssertEqual ( graph. packages. map { $0. name } . sorted ( ) , [ " A " , " Root " ] )
@@ -420,6 +449,10 @@ final class WorkspaceTests: XCTestCase {
420
449
try tagGitRepo ( repoPath, tag: " 1.0.1 " )
421
450
422
451
try workspace. updateDependencies ( )
452
+ // Test the delegates after update.
453
+ XCTAssertEqual ( delegate. fetched, [ repoPath. asString] )
454
+ XCTAssertEqual ( delegate. cloned, [ repoPath. asString] )
455
+ XCTAssertEqual ( delegate. checkedOut [ repoPath. asString] , " 1.0.1 " )
423
456
424
457
graph = try workspace. loadPackageGraph ( )
425
458
XCTAssert ( graph. packages. filter { $0. name == " A " } . first!. version == " 1.0.1 " )
0 commit comments