From 7131cb039a5c5c505e3c02f5136cec8ad8f6ba66 Mon Sep 17 00:00:00 2001 From: Michael Gerasymenko Date: Tue, 6 May 2025 10:18:54 +0200 Subject: [PATCH] #50: Assume Package.resolved modifies underlying targets --- .../PackageMetadata.swift | 5 +++- .../PackageMetadataTests.swift | 27 ++++++++++++++----- .../SelectiveTestingConfigTests.swift | 18 +++++++++++++ 3 files changed, 43 insertions(+), 7 deletions(-) diff --git a/Sources/DependencyCalculator/PackageMetadata.swift b/Sources/DependencyCalculator/PackageMetadata.swift index a6c667c..3e21461 100644 --- a/Sources/DependencyCalculator/PackageMetadata.swift +++ b/Sources/DependencyCalculator/PackageMetadata.swift @@ -87,7 +87,10 @@ struct PackageTargetMetadata { let type = target["type"] as? String - var affectedBy = Set([path + "Package.swift"]) + var affectedBy = Set([ + path + "Package.swift", + path + "Package.resolved" + ]) let typePath: String diff --git a/Tests/DependencyCalculatorTests/PackageMetadataTests.swift b/Tests/DependencyCalculatorTests/PackageMetadataTests.swift index b22e66d..2bbd346 100644 --- a/Tests/DependencyCalculatorTests/PackageMetadataTests.swift +++ b/Tests/DependencyCalculatorTests/PackageMetadataTests.swift @@ -24,15 +24,22 @@ final class PackageMetadataTests: XCTestCase { XCTAssertEqual(first.name, "ExampleSubpackage") XCTAssertEqual(first.path, basePath) XCTAssertEqual(first.dependsOn.count, 0) - XCTAssertEqual(first.affectedBy, Set([basePath + "Package.swift", - basePath + "Sources" + "ExampleSubpackage", - basePath + "Sources" + "ExampleSubpackage" + "Assets.xcassets"])) + XCTAssertEqual(first.affectedBy, Set([ + basePath + "Package.swift", + basePath + "Package.resolved", + basePath + "Sources" + "ExampleSubpackage", + basePath + "Sources" + "ExampleSubpackage" + "Assets.xcassets" + ])) let second = metadata[1] XCTAssertEqual(second.name, "ExampleSubpackageTests") XCTAssertEqual(second.path, basePath) XCTAssertEqual(second.dependsOn.count, 1) - XCTAssertEqual(second.affectedBy, Set([basePath + "Package.swift", basePath + "Tests" + "ExampleSubpackageTests"])) + XCTAssertEqual(second.affectedBy, Set([ + basePath + "Package.swift", + basePath + "Package.resolved", + basePath + "Tests" + "ExampleSubpackageTests" + ])) let identity = try XCTUnwrap(second.dependsOn.first) @@ -57,12 +64,20 @@ final class PackageMetadataTests: XCTestCase { XCTAssertEqual(first.name, "SelectiveTesting") XCTAssertEqual(first.path, basePath) XCTAssertEqual(first.dependsOn, Set([TargetIdentity.package(path: basePath, targetName: "SelectiveTestingCore", testTarget: false)])) - XCTAssertEqual(first.affectedBy, Set([basePath + "Package.swift", basePath + "Sources" + "SelectiveTesting"])) + XCTAssertEqual(first.affectedBy, Set([ + basePath + "Package.swift", + basePath + "Package.resolved", + basePath + "Sources" + "SelectiveTesting" + ])) let second = metadata[1] XCTAssertEqual(second.name, "SelectiveTestingCore") XCTAssertEqual(second.path, basePath) XCTAssertEqual(second.dependsOn.count, 6) - XCTAssertEqual(second.affectedBy, Set([basePath + "Package.swift", basePath + "Sources" + "SelectiveTestingCore"])) + XCTAssertEqual(second.affectedBy, Set([ + basePath + "Package.swift", + basePath + "Package.resolved", + basePath + "Sources" + "SelectiveTestingCore" + ])) } } diff --git a/Tests/SelectiveTestingTests/SelectiveTestingConfigTests.swift b/Tests/SelectiveTestingTests/SelectiveTestingConfigTests.swift index db941a4..48130b4 100644 --- a/Tests/SelectiveTestingTests/SelectiveTestingConfigTests.swift +++ b/Tests/SelectiveTestingTests/SelectiveTestingConfigTests.swift @@ -80,6 +80,24 @@ final class SelectiveTestingConfigTests: XCTestCase { testTool.packageTests, testTool.subtests])) } + + func testConfigTestplanPath_packageResolvedChanged() async throws { + // given + let tool = try testTool.createSUT(config: Config(basePath: (testTool.projectPath + "ExampleWorkspace.xcworkspace").string, + testPlan: "ExampleProject.xctestplan", + exclude: nil, + extra: nil)) + // when + try testTool.addFile(at: testTool.projectPath + "ExamplePackage/Package.resolved") + + // then + let _ = try await tool.run() + try testTool.validateTestPlan(testPlanPath: testTool.projectPath + "ExampleProject.xctestplan", + expected: Set([testTool.mainProjectTests, + testTool.mainProjectUITests, + testTool.packageTests, + testTool.subtests])) + } func testAdditionalDependency() async throws { // given