Skip to content

Commit e8a5dea

Browse files
authored
#50: Assume Package.resolved modifies underlying targets (#51)
1 parent f8910c2 commit e8a5dea

File tree

3 files changed

+43
-7
lines changed

3 files changed

+43
-7
lines changed

Sources/DependencyCalculator/PackageMetadata.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,10 @@ struct PackageTargetMetadata {
8787

8888
let type = target["type"] as? String
8989

90-
var affectedBy = Set<Path>([path + "Package.swift"])
90+
var affectedBy = Set<Path>([
91+
path + "Package.swift",
92+
path + "Package.resolved"
93+
])
9194

9295
let typePath: String
9396

Tests/DependencyCalculatorTests/PackageMetadataTests.swift

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,22 @@ final class PackageMetadataTests: XCTestCase {
2424
XCTAssertEqual(first.name, "ExampleSubpackage")
2525
XCTAssertEqual(first.path, basePath)
2626
XCTAssertEqual(first.dependsOn.count, 0)
27-
XCTAssertEqual(first.affectedBy, Set([basePath + "Package.swift",
28-
basePath + "Sources" + "ExampleSubpackage",
29-
basePath + "Sources" + "ExampleSubpackage" + "Assets.xcassets"]))
27+
XCTAssertEqual(first.affectedBy, Set([
28+
basePath + "Package.swift",
29+
basePath + "Package.resolved",
30+
basePath + "Sources" + "ExampleSubpackage",
31+
basePath + "Sources" + "ExampleSubpackage" + "Assets.xcassets"
32+
]))
3033

3134
let second = metadata[1]
3235
XCTAssertEqual(second.name, "ExampleSubpackageTests")
3336
XCTAssertEqual(second.path, basePath)
3437
XCTAssertEqual(second.dependsOn.count, 1)
35-
XCTAssertEqual(second.affectedBy, Set([basePath + "Package.swift", basePath + "Tests" + "ExampleSubpackageTests"]))
38+
XCTAssertEqual(second.affectedBy, Set([
39+
basePath + "Package.swift",
40+
basePath + "Package.resolved",
41+
basePath + "Tests" + "ExampleSubpackageTests"
42+
]))
3643

3744
let identity = try XCTUnwrap(second.dependsOn.first)
3845

@@ -57,12 +64,20 @@ final class PackageMetadataTests: XCTestCase {
5764
XCTAssertEqual(first.name, "SelectiveTesting")
5865
XCTAssertEqual(first.path, basePath)
5966
XCTAssertEqual(first.dependsOn, Set([TargetIdentity.package(path: basePath, targetName: "SelectiveTestingCore", testTarget: false)]))
60-
XCTAssertEqual(first.affectedBy, Set([basePath + "Package.swift", basePath + "Sources" + "SelectiveTesting"]))
67+
XCTAssertEqual(first.affectedBy, Set([
68+
basePath + "Package.swift",
69+
basePath + "Package.resolved",
70+
basePath + "Sources" + "SelectiveTesting"
71+
]))
6172

6273
let second = metadata[1]
6374
XCTAssertEqual(second.name, "SelectiveTestingCore")
6475
XCTAssertEqual(second.path, basePath)
6576
XCTAssertEqual(second.dependsOn.count, 6)
66-
XCTAssertEqual(second.affectedBy, Set([basePath + "Package.swift", basePath + "Sources" + "SelectiveTestingCore"]))
77+
XCTAssertEqual(second.affectedBy, Set([
78+
basePath + "Package.swift",
79+
basePath + "Package.resolved",
80+
basePath + "Sources" + "SelectiveTestingCore"
81+
]))
6782
}
6883
}

Tests/SelectiveTestingTests/SelectiveTestingConfigTests.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,24 @@ final class SelectiveTestingConfigTests: XCTestCase {
8080
testTool.packageTests,
8181
testTool.subtests]))
8282
}
83+
84+
func testConfigTestplanPath_packageResolvedChanged() async throws {
85+
// given
86+
let tool = try testTool.createSUT(config: Config(basePath: (testTool.projectPath + "ExampleWorkspace.xcworkspace").string,
87+
testPlan: "ExampleProject.xctestplan",
88+
exclude: nil,
89+
extra: nil))
90+
// when
91+
try testTool.addFile(at: testTool.projectPath + "ExamplePackage/Package.resolved")
92+
93+
// then
94+
let _ = try await tool.run()
95+
try testTool.validateTestPlan(testPlanPath: testTool.projectPath + "ExampleProject.xctestplan",
96+
expected: Set([testTool.mainProjectTests,
97+
testTool.mainProjectUITests,
98+
testTool.packageTests,
99+
testTool.subtests]))
100+
}
83101

84102
func testAdditionalDependency() async throws {
85103
// given

0 commit comments

Comments
 (0)