Skip to content

Commit 5c432b0

Browse files
authored
Merge pull request #661 from aciidb0mb3r/sanity-checks
[WorkspaceTests] Add delegate sanity tests
2 parents f3f9fd9 + 4a6125d commit 5c432b0

File tree

1 file changed

+37
-4
lines changed

1 file changed

+37
-4
lines changed

Tests/CommandsTests/WorkspaceTests.swift

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,24 @@ import TestSupport
2727
private let sharedManifestLoader = ManifestLoader(resources: Resources())
2828

2929
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+
3035
func fetchingMissingRepositories(_ urls: Set<String>) {
3136
}
3237

3338
func fetching(repository: String) {
34-
print("Fetching " + repository)
39+
fetched.append(repository)
3540
}
3641

3742
func cloning(repository: String) {
38-
print("Cloning: " + repository)
43+
cloned.append(repository)
3944
}
4045

4146
func checkingOut(repository: String, at reference: String) {
42-
print("Checking out: " + repository + " at " + reference)
47+
checkedOut[repository] = reference
4348
}
4449
}
4550

@@ -336,6 +341,11 @@ final class WorkspaceTests: XCTestCase {
336341
let delegate = TestWorkspaceDelegate()
337342
let workspace = try Workspace(rootPackage: path, manifestLoader: mockManifestLoader, delegate: delegate)
338343

344+
// Ensure delegates haven't been called yet.
345+
XCTAssert(delegate.fetched.isEmpty)
346+
XCTAssert(delegate.cloned.isEmpty)
347+
XCTAssert(delegate.checkedOut.isEmpty)
348+
339349
// Ensure we have a checkout for A.
340350
for name in ["A"] {
341351
let revision = try GitRepository(path: AbsolutePath(repos[name]!.url)).getCurrentRevision()
@@ -345,6 +355,14 @@ final class WorkspaceTests: XCTestCase {
345355
// Load the package graph.
346356
let graph = try workspace.loadPackageGraph()
347357

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+
348366
// Validate the graph has the correct basic structure.
349367
XCTAssertEqual(graph.packages.count, 4)
350368
XCTAssertEqual(graph.packages.map{ $0.name }.sorted(), [
@@ -403,12 +421,23 @@ final class WorkspaceTests: XCTestCase {
403421
MockManifestLoader.Key(url: repos["A"]!.url, version: "1.0.1"): aaManifest,
404422
])
405423

424+
let delegate = TestWorkspaceDelegate()
406425
// 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)
408432

409433
// Load the package graph.
410434
var graph = try workspace.loadPackageGraph()
411435

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+
412441
// Validate the graph has the correct basic structure.
413442
XCTAssertEqual(graph.packages.count, 2)
414443
XCTAssertEqual(graph.packages.map{ $0.name }.sorted(), ["A", "Root"])
@@ -420,6 +449,10 @@ final class WorkspaceTests: XCTestCase {
420449
try tagGitRepo(repoPath, tag: "1.0.1")
421450

422451
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")
423456

424457
graph = try workspace.loadPackageGraph()
425458
XCTAssert(graph.packages.filter{ $0.name == "A" }.first!.version == "1.0.1")

0 commit comments

Comments
 (0)