diff --git a/Fixtures/Miscellaneous/TestDiscovery/Subclass/Package.swift b/Fixtures/Miscellaneous/TestDiscovery/Subclass/Package.swift index b0123f3acdc..0721bc0001f 100644 --- a/Fixtures/Miscellaneous/TestDiscovery/Subclass/Package.swift +++ b/Fixtures/Miscellaneous/TestDiscovery/Subclass/Package.swift @@ -5,6 +5,7 @@ let package = Package( name: "Subclass", targets: [ .target(name: "Subclass"), - .testTarget(name: "SubclassTests", dependencies: ["Subclass"]), + .testTarget(name: "Module1Tests", dependencies: ["Subclass"]), + .testTarget(name: "Module2Tests", dependencies: ["Subclass"]), ] ) diff --git a/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/Module1Tests/Tests1.swift b/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/Module1Tests/Tests1.swift new file mode 100644 index 00000000000..3497a6cff70 --- /dev/null +++ b/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/Module1Tests/Tests1.swift @@ -0,0 +1,15 @@ +import XCTest + +class Tests1: XCTestCase { + func test11() { + print("->Module1::Tests1::test11") + } + + func test12() { + print("->Module1::Tests1::test12") + } + + func test13() { + print("->Module1::Tests1::test13") + } +} diff --git a/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/Module1Tests/Tests2.swift b/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/Module1Tests/Tests2.swift new file mode 100644 index 00000000000..a690f201d52 --- /dev/null +++ b/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/Module1Tests/Tests2.swift @@ -0,0 +1,33 @@ +import XCTest + +class Tests3: Tests2 { + override func test11() { + print("->Module1::Tests3::test11") + } + + override func test21() { + print("->Module1::Tests3::test21") + } + + func test31() { + print("->Module1::Tests3::test31") + } + + func test32() { + print("->Module1::Tests3::test32") + } + + func test33() { + print("->Module1::Tests3::test33") + } +} + +class Tests2: Tests1 { + func test21() { + print("->Module1::Tests2::test21") + } + + func test22() { + print("->Module1::Tests2::test22") + } +} diff --git a/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/Module2Tests/Test1.swift b/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/Module2Tests/Test1.swift new file mode 100644 index 00000000000..1f33e0f9456 --- /dev/null +++ b/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/Module2Tests/Test1.swift @@ -0,0 +1,15 @@ +import XCTest + +class Tests1: XCTestCase { + func test11() { + print("->Module2::Tests1::test11") + } + + func test12() { + print("->Module2::Tests1::test12") + } + + func test13() { + print("->Module2::Tests1::test13") + } +} diff --git a/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/SubclassTests/SubclassTestsBase.swift b/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/SubclassTests/SubclassTestsBase.swift deleted file mode 100644 index fd2f98ad1d7..00000000000 --- a/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/SubclassTests/SubclassTestsBase.swift +++ /dev/null @@ -1,7 +0,0 @@ -import XCTest -@testable import Subclass - -class SubclassTestsBase: XCTestCase { - func test1() { - } -} diff --git a/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/SubclassTests/SubclassTestsDerived.swift b/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/SubclassTests/SubclassTestsDerived.swift deleted file mode 100644 index cfc4ae452e0..00000000000 --- a/Fixtures/Miscellaneous/TestDiscovery/Subclass/Tests/SubclassTests/SubclassTestsDerived.swift +++ /dev/null @@ -1,7 +0,0 @@ -import XCTest -@testable import Subclass - -class SubclassTestsDerived: SubclassTestsBase { - override func test1() { - } -} diff --git a/Sources/Build/BuildOperationBuildSystemDelegateHandler.swift b/Sources/Build/BuildOperationBuildSystemDelegateHandler.swift index 4d498832331..1a9d74580ab 100644 --- a/Sources/Build/BuildOperationBuildSystemDelegateHandler.swift +++ b/Sources/Build/BuildOperationBuildSystemDelegateHandler.swift @@ -113,9 +113,7 @@ final class TestDiscoveryCommand: CustomLLBuildCommand { let store = try IndexStore.open(store: index, api: api) // FIXME: We can speed this up by having one llbuild command per object file. - let tests = try tool.inputs.flatMap { - try store.listTests(inObjectFile: AbsolutePath($0.name)) - } + let tests = try store.listTests(in: tool.inputs.map{ AbsolutePath($0.name) }) let outputs = tool.outputs.compactMap{ try? AbsolutePath(validating: $0.name) } let testsByModule = Dictionary(grouping: tests, by: { $0.module.spm_mangledToC99ExtendedIdentifier() }) diff --git a/Tests/FunctionalTests/TestDiscoveryTests.swift b/Tests/FunctionalTests/TestDiscoveryTests.swift index 9ee4cfa07e3..496ef75bcb6 100644 --- a/Tests/FunctionalTests/TestDiscoveryTests.swift +++ b/Tests/FunctionalTests/TestDiscoveryTests.swift @@ -130,9 +130,25 @@ class TestDiscoveryTests: XCTestCase { // in "swift test" build output goes to stderr XCTAssertMatch(stderr, .contains("Build complete!")) // in "swift test" test output goes to stdout - XCTAssertMatch(stdout, .contains("SubclassTestsBase.test1")) - XCTAssertMatch(stdout, .contains("SubclassTestsDerived.test1")) - XCTAssertMatch(stdout, .contains("Executed 2 tests")) + XCTAssertMatch(stdout, .contains("Tests3.test11")) + XCTAssertMatch(stdout, .contains("->Module1::Tests1::test11")) + XCTAssertMatch(stdout, .contains("Tests3.test12")) + XCTAssertMatch(stdout, .contains("->Module1::Tests1::test12")) + XCTAssertMatch(stdout, .contains("Tests3.test13")) + XCTAssertMatch(stdout, .contains("->Module1::Tests1::test13")) + XCTAssertMatch(stdout, .contains("Tests3.test21")) + XCTAssertMatch(stdout, .contains("->Module1::Tests2::test21")) + XCTAssertMatch(stdout, .contains("Tests3.test22")) + XCTAssertMatch(stdout, .contains("->Module1::Tests2::test22")) + XCTAssertMatch(stdout, .contains("Tests3.test31")) + XCTAssertMatch(stdout, .contains("->Module1::Tests3::test31")) + XCTAssertMatch(stdout, .contains("Tests3.test32")) + XCTAssertMatch(stdout, .contains("->Module1::Tests3::test32")) + XCTAssertMatch(stdout, .contains("Tests3.test33")) + XCTAssertMatch(stdout, .contains("->Module1::Tests3::test33")) + + XCTAssertMatch(stdout, .contains("->Module2::Tests1::test11")) + XCTAssertMatch(stdout, .contains("->Module2::Tests1::test12")) } } } diff --git a/Utilities/Docker/docker-compose.2004.56.yaml b/Utilities/Docker/docker-compose.2004.56.yaml index 2bec9bdd30c..f5255788e1d 100644 --- a/Utilities/Docker/docker-compose.2004.56.yaml +++ b/Utilities/Docker/docker-compose.2004.56.yaml @@ -16,7 +16,6 @@ services: args: ubuntu_version: "focal" swift_version: "5.6" - base_image: "swiftlang/swift:nightly-5.6-focal" build: image: swift-package-manager:20.04-5.6 diff --git a/Utilities/Docker/docker-compose.2004.57.yaml b/Utilities/Docker/docker-compose.2004.57.yaml new file mode 100644 index 00000000000..8ac94c03981 --- /dev/null +++ b/Utilities/Docker/docker-compose.2004.57.yaml @@ -0,0 +1,37 @@ +# This source file is part of the Swift open source project +# +# Copyright (c) 2022 Apple Inc. and the Swift project authors +# Licensed under Apache License v2.0 with Runtime Library Exception +# +# See http://swift.org/LICENSE.txt for license information +# See http://swift.org/CONTRIBUTORS.txt for Swift project authors + +version: "3" + +services: + + runtime-setup: + image: swift-package-manager:20.04-5.7 + build: + args: + ubuntu_version: "focal" + swift_version: "5.7" + base_image: "swiftlang/swift:nightly-5.7-focal" + + build: + image: swift-package-manager:20.04-5.7 + + test: + image: swift-package-manager:20.04-5.7 + + bootstrap-clean: + image: swift-package-manager:20.04-5.7 + + bootstrap-build: + image: swift-package-manager:20.04-5.7 + + bootstrap-test: + image: swift-package-manager:20.04-5.7 + + shell: + image: swift-package-manager:20.04-5.7