diff --git a/Sources/_IntegrationTestSupport/Helpers.swift b/Sources/_IntegrationTestSupport/Helpers.swift index 2fc68517eb6..41583bb8a3c 100644 --- a/Sources/_IntegrationTestSupport/Helpers.swift +++ b/Sources/_IntegrationTestSupport/Helpers.swift @@ -72,10 +72,9 @@ public let xcodebuild: AbsolutePath = { package func sh( _ arguments: CustomStringConvertible..., env: [String: String] = [:], - file: StaticString = #file, - line: UInt = #line + sourceLocation: SourceLocation = #_sourceLocation, ) throws -> ShReturnType { - let result = try _sh(arguments, env: env, file: file, line: line) + let result = try _sh(arguments, env: env) let stdout = try result.utf8Output() let stderr = try result.utf8stderrOutput() @@ -84,7 +83,8 @@ package func sh( .record( Comment( "Command failed with exit code: \(result.exitStatus) - \(result.integrationTests_debugDescription)" - ) + ), + sourceLocation: sourceLocation, ) } @@ -95,8 +95,6 @@ package func sh( package func _sh( _ arguments: [CustomStringConvertible], env: [String: String] = [:], - file: StaticString = #file, - line: UInt = #line ) throws -> AsyncProcessResult { var environment = Environment() diff --git a/Sources/_InternalTestSupport/SwiftTesting+Tags.swift b/Sources/_InternalTestSupport/SwiftTesting+Tags.swift index 72c8db7c7f1..34cdfa8391b 100644 --- a/Sources/_InternalTestSupport/SwiftTesting+Tags.swift +++ b/Sources/_InternalTestSupport/SwiftTesting+Tags.swift @@ -27,9 +27,11 @@ extension Tag.Feature { public enum PackageType {} @Tag public static var CodeCoverage: Tag + @Tag public static var Mirror: Tag @Tag public static var Resource: Tag @Tag public static var SpecialCharacters: Tag @Tag public static var Traits: Tag + } extension Tag.Feature.Command { @@ -40,12 +42,15 @@ extension Tag.Feature.Command { } extension Tag.Feature.Command.Package { + @Tag public static var Config: Tag @Tag public static var Init: Tag @Tag public static var DumpPackage: Tag @Tag public static var DumpSymbolGraph: Tag @Tag public static var Plugin: Tag @Tag public static var Reset: Tag + @Tag public static var ShowDependencies: Tag @Tag public static var ToolsVersion: Tag + @Tag public static var Update: Tag } extension Tag.Feature.PackageType { diff --git a/Sources/_InternalTestSupport/SwiftTesting+TraitsBug.swift b/Sources/_InternalTestSupport/SwiftTesting+TraitsBug.swift index a1458a0ec39..c5104b6f4c8 100644 --- a/Sources/_InternalTestSupport/SwiftTesting+TraitsBug.swift +++ b/Sources/_InternalTestSupport/SwiftTesting+TraitsBug.swift @@ -30,3 +30,17 @@ extension Trait where Self == Testing.Bug { bug(nil, id: 0, "\(relationship): \(issue)") } } + +extension Trait where Self == Testing.Bug { + public static var IssueWindowsLongPath: Self { + .issue("https://github.com/swiftlang/swift-tools-support-core/pull/521", relationship: .fixedBy) + } + + public static var IssueProductTypeForObjectLibraries: Self { + .issue("https://github.com/swiftlang/swift-build/issues/609", relationship: .defect) + } + + public static var IssueSwiftBuildLinuxRunnable: Self { + .issue("https://github.com/swiftlang/swift-package-manager/issues/8416", relationship: .defect) + } +} diff --git a/Tests/FunctionalTests/DependencyResolutionTests.swift b/Tests/FunctionalTests/DependencyResolutionTests.swift index 21f196180fc..37e9842f8f2 100644 --- a/Tests/FunctionalTests/DependencyResolutionTests.swift +++ b/Tests/FunctionalTests/DependencyResolutionTests.swift @@ -2,7 +2,7 @@ // // This source file is part of the Swift open source project // -// Copyright (c) 2014-2017 Apple Inc. and the Swift project authors +// Copyright (c) 2014-2025 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 @@ -12,160 +12,361 @@ import Basics import Commands +import Foundation import PackageModel import SourceControl -import _InternalTestSupport +import Testing import Workspace -import XCTest +import _InternalTestSupport +import struct SPMBuildCore.BuildSystemProvider import enum TSCUtility.Git -class DependencyResolutionTests: XCTestCase { - func testInternalSimple() async throws { - try await fixtureXCTest(name: "DependencyResolution/Internal/Simple") { fixturePath in - await XCTAssertBuilds(fixturePath, buildSystem: .native) +@Suite( + .tags( + Tag.TestSize.large, + ), +) +struct DependencyResolutionTests { + @Test( + .IssueSwiftBuildLinuxRunnable, + .IssueWindowsLongPath, + .IssueProductTypeForObjectLibraries, + .tags( + Tag.Feature.Command.Build, + ), + arguments: SupportedBuildSystemOnAllPlatforms, + BuildConfiguration.allCases, + ) + func internalSimple( + buildSystem: BuildSystemProvider.Kind, + configuration: BuildConfiguration, + ) async throws { + try await withKnownIssue(isIntermittent: (ProcessInfo.hostOperatingSystem == .windows) ) { + try await fixture(name: "DependencyResolution/Internal/Simple") { fixturePath in + try await executeSwiftBuild( + fixturePath, + configuration: configuration, + buildSystem: buildSystem, + ) - let output = try await AsyncProcess.checkNonZeroExit(args: fixturePath.appending(components: ".build", UserToolchain.default.targetTriple.platformBuildPathComponent, "debug", "Foo").pathString).withSwiftLineEnding - XCTAssertEqual(output, "Foo\nBar\n") + let executablePath = try fixturePath.appending( + components: [".build", UserToolchain.default.targetTriple.platformBuildPathComponent] + + buildSystem.binPathSuffixes(for: configuration) + ["Foo"] + ) + let output = try await AsyncProcess.checkNonZeroExit(args: executablePath.pathString).withSwiftLineEnding + #expect(output == "Foo\nBar\n") + } + } when: { + (ProcessInfo.hostOperatingSystem == .linux && buildSystem == .swiftbuild && !CiEnvironment.runningInSmokeTestPipeline) + || (ProcessInfo.hostOperatingSystem == .windows && buildSystem == .swiftbuild) } } - func testInternalExecAsDep() async throws { - try await fixtureXCTest(name: "DependencyResolution/Internal/InternalExecutableAsDependency") { fixturePath in - await XCTAssertBuildFails(fixturePath, buildSystem: .native) + @Test( + .issue("https://github.com/swiftlang/swift-package-manager/issues/8984", relationship: .defect), + .tags( + Tag.Feature.Command.Build, + ), + arguments: SupportedBuildSystemOnAllPlatforms, + BuildConfiguration.allCases, + ) + func internalExecAsDep( + buildSystem: BuildSystemProvider.Kind, + configuration: BuildConfiguration, + ) async throws { + try await fixture(name: "DependencyResolution/Internal/InternalExecutableAsDependency") { fixturePath in + await withKnownIssue { + await #expect(throws: (any Error).self) { + try await executeSwiftBuild( + fixturePath, + configuration: configuration, + buildSystem: buildSystem, + ) + } + } when: { + configuration == .release && buildSystem == .swiftbuild && ProcessInfo.hostOperatingSystem != .windows // an error is not raised. + } } } - func testInternalComplex() async throws { - try await fixtureXCTest(name: "DependencyResolution/Internal/Complex") { fixturePath in - await XCTAssertBuilds(fixturePath, buildSystem: .native) + @Test( + .IssueWindowsLongPath, + .IssueProductTypeForObjectLibraries, + .tags( + Tag.Feature.Command.Build, + ), + arguments: SupportedBuildSystemOnAllPlatforms, + BuildConfiguration.allCases, + ) + func internalComplex( + buildSystem: BuildSystemProvider.Kind, + configuration: BuildConfiguration, + ) async throws { + try await withKnownIssue(isIntermittent: ProcessInfo.hostOperatingSystem == .windows) { + try await fixture(name: "DependencyResolution/Internal/Complex") { fixturePath in + try await executeSwiftBuild( + fixturePath, + configuration: configuration, + buildSystem: buildSystem, + ) - let output = try await AsyncProcess.checkNonZeroExit(args: fixturePath.appending(components: ".build", UserToolchain.default.targetTriple.platformBuildPathComponent, "debug", "Foo").pathString).withSwiftLineEnding - XCTAssertEqual(output, "meiow Baz\n") + let executablePath = try fixturePath.appending( + components: [".build", UserToolchain.default.targetTriple.platformBuildPathComponent] + + buildSystem.binPathSuffixes(for: configuration) + ["Foo"] + ) + let output = try await AsyncProcess.checkNonZeroExit(args: executablePath.pathString) + .withSwiftLineEnding + #expect(output == "meiow Baz\n") + } + } when: { + (ProcessInfo.hostOperatingSystem == .linux && buildSystem == .swiftbuild && !CiEnvironment.runningInSmokeTestPipeline) + || (ProcessInfo.hostOperatingSystem == .windows && buildSystem == .swiftbuild) } } /// Check resolution of a trivial package with one dependency. - func testExternalSimple() async throws { - try await fixtureXCTest(name: "DependencyResolution/External/Simple") { fixturePath in - // Add several other tags to check version selection. - let repo = GitRepository(path: fixturePath.appending(components: "Foo")) - for tag in ["1.1.0", "1.2.0"] { - try repo.tag(name: tag) - } + @Test( + .IssueProductTypeForObjectLibraries, + .tags( + Tag.Feature.Command.Build, + ), + arguments: SupportedBuildSystemOnAllPlatforms, + BuildConfiguration.allCases, + ) + func externalSimple( + buildSystem: BuildSystemProvider.Kind, + configuration: BuildConfiguration, + ) async throws { + try await withKnownIssue(isIntermittent: true) { + try await fixture(name: "DependencyResolution/External/Simple") { fixturePath in + // Add several other tags to check version selection. + let repo = GitRepository(path: fixturePath.appending(components: "Foo")) + for tag in ["1.1.0", "1.2.0"] { + try repo.tag(name: tag) + } - let packageRoot = fixturePath.appending("Bar") - await XCTAssertBuilds(packageRoot, buildSystem: .native) - XCTAssertFileExists(fixturePath.appending(components: "Bar", ".build", try UserToolchain.default.targetTriple.platformBuildPathComponent, "debug", executableName("Bar"))) - let path = try SwiftPM.packagePath(for: "Foo", packageRoot: packageRoot) - XCTAssert(try GitRepository(path: path).getTags().contains("1.2.3")) + let packageRoot: AbsolutePath = fixturePath.appending("Bar") + try await executeSwiftBuild( + packageRoot, + configuration: configuration, + buildSystem: buildSystem, + ) + let executablePath = packageRoot.appending( + components: [ + ".build", + try UserToolchain.default.targetTriple.platformBuildPathComponent, + ] + buildSystem.binPathSuffixes(for: configuration) + [executableName("Bar")] + ) + #expect( + localFileSystem.exists(executablePath), + "Path \(executablePath) does not exist", + ) + let path = try SwiftPM.packagePath(for: "Foo", packageRoot: packageRoot) + #expect(try GitRepository(path: path).getTags().contains("1.2.3")) + } + } when: { + ProcessInfo.hostOperatingSystem == .windows && buildSystem == .swiftbuild } } - func testExternalComplex() async throws { - try await fixtureXCTest(name: "DependencyResolution/External/Complex") { fixturePath in - await XCTAssertBuilds(fixturePath.appending("app"), buildSystem: .native) - let output = try await AsyncProcess.checkNonZeroExit(args: fixturePath.appending(components: "app", ".build", UserToolchain.default.targetTriple.platformBuildPathComponent, "debug", "Dealer").pathString).withSwiftLineEnding - XCTAssertEqual(output, "♣︎K\n♣︎Q\n♣︎J\n♣︎10\n♣︎9\n♣︎8\n♣︎7\n♣︎6\n♣︎5\n♣︎4\n") + @Test( + .IssueSwiftBuildLinuxRunnable, + .IssueWindowsLongPath, + .tags( + Tag.Feature.Command.Build, + ), + arguments: SupportedBuildSystemOnAllPlatforms, + BuildConfiguration.allCases, + ) + func externalComplex( + buildSystem: BuildSystemProvider.Kind, + configuration: BuildConfiguration, + ) async throws { + try await withKnownIssue(isIntermittent: ProcessInfo.hostOperatingSystem == .windows){ + try await fixture(name: "DependencyResolution/External/Complex") { fixturePath in + try await executeSwiftBuild( + fixturePath.appending("app"), + configuration: configuration, + buildSystem: buildSystem, + ) + let executablePath = try fixturePath.appending( + components: [ + "app", ".build", UserToolchain.default.targetTriple.platformBuildPathComponent, + ] + buildSystem.binPathSuffixes(for: configuration) + ["Dealer"] + ) + let output = try await AsyncProcess.checkNonZeroExit(args: executablePath.pathString) + .withSwiftLineEnding + #expect(output == "♣︎K\n♣︎Q\n♣︎J\n♣︎10\n♣︎9\n♣︎8\n♣︎7\n♣︎6\n♣︎5\n♣︎4\n") + } + } when: { + [.linux, .windows].contains(ProcessInfo.hostOperatingSystem) && buildSystem == .swiftbuild } } - - func testConvenienceBranchInit() async throws { - try await fixtureXCTest(name: "DependencyResolution/External/Branch") { fixturePath in - // Tests the convenience init .package(url: , branch: ) - let app = fixturePath.appending("Bar") - try await executeSwiftBuild( - app, - buildSystem: .native, - ) + + @Test( + .IssueProductTypeForObjectLibraries, + .tags( + Tag.Feature.Command.Build, + ), + arguments: SupportedBuildSystemOnAllPlatforms, + BuildConfiguration.allCases, + ) + func convenienceBranchInit( + buildSystem: BuildSystemProvider.Kind, + configuration: BuildConfiguration, + ) async throws { + try await withKnownIssue(isIntermittent: true) { + try await fixture(name: "DependencyResolution/External/Branch") { fixturePath in + // Tests the convenience init .package(url: , branch: ) + let app = fixturePath.appending("Bar") + try await executeSwiftBuild( + app, + configuration: configuration, + buildSystem: buildSystem, + ) + } + } when: { + ProcessInfo.hostOperatingSystem == .windows && buildSystem == .swiftbuild } } - func testMirrors() async throws { - try await fixtureXCTest(name: "DependencyResolution/External/Mirror") { fixturePath in - let prefix = try resolveSymlinks(fixturePath) - let appPath = prefix.appending("App") - let packageResolvedPath = appPath.appending("Package.resolved") - - // prepare the dependencies as git repos - for directory in ["Foo", "Bar", "BarMirror"] { - let path = prefix.appending(component: directory) - _ = try await AsyncProcess.checkNonZeroExit(args: Git.tool, "-C", path.pathString, "init") - _ = try await AsyncProcess.checkNonZeroExit(args: Git.tool, "-C", path.pathString, "checkout", "-b", "newMain") - } + @Test( + .IssueProductTypeForObjectLibraries, + .tags( + Tag.Feature.Mirror, + Tag.Feature.Command.Package.ShowDependencies, + Tag.Feature.Command.Package.Config, + ), + arguments: SupportedBuildSystemOnAllPlatforms, + BuildConfiguration.allCases, + ) + func mirrors( + buildSystem: BuildSystemProvider.Kind, + configuration: BuildConfiguration, + ) async throws { + try await withKnownIssue("https://github.com/swiftlang/swift-build/issues/609", isIntermittent: true) { + try await fixture(name: "DependencyResolution/External/Mirror") { fixturePath in + let prefix = try resolveSymlinks(fixturePath) + let appPath = prefix.appending("App") + let packageResolvedPath = appPath.appending("Package.resolved") - // run with no mirror - do { - let output = try await executeSwiftPackage( - appPath, - extraArgs: ["show-dependencies"], - buildSystem: .native, - ) - // logs are in stderr - XCTAssertMatch(output.stderr, .contains("Fetching \(prefix.appending("Foo").pathString)\n")) - XCTAssertMatch(output.stderr, .contains("Fetching \(prefix.appending("Bar").pathString)\n")) - // results are in stdout - XCTAssertMatch(output.stdout, .contains("foo<\(prefix.appending("Foo").pathString)@unspecified")) - XCTAssertMatch(output.stdout, .contains("bar<\(prefix.appending("Bar").pathString)@unspecified")) - - let resolvedPackages: String = try localFileSystem.readFileContents(packageResolvedPath) - XCTAssertMatch(resolvedPackages, .contains(prefix.appending("Foo").escapedPathString)) - XCTAssertMatch(resolvedPackages, .contains(prefix.appending("Bar").escapedPathString)) - - await XCTAssertBuilds(appPath, buildSystem: .native) - } + // prepare the dependencies as git repos + for directory in ["Foo", "Bar", "BarMirror"] { + let path = prefix.appending(component: directory) + _ = try await AsyncProcess.checkNonZeroExit(args: Git.tool, "-C", path.pathString, "init") + _ = try await AsyncProcess.checkNonZeroExit( + args: Git.tool, + "-C", + path.pathString, + "checkout", + "-b", + "newMain" + ) + } - // clean - try localFileSystem.removeFileTree(appPath.appending(".build")) - try localFileSystem.removeFileTree(packageResolvedPath) - - // set mirror - _ = try await executeSwiftPackage( - appPath, - extraArgs: [ - "config", - "set-mirror", - "--original-url", - prefix.appending("Bar").pathString, - "--mirror-url", - prefix.appending("BarMirror").pathString, - ], - buildSystem: .native, - ) + // run with no mirror + do { + let output = try await executeSwiftPackage( + appPath, + configuration: configuration, + extraArgs: ["show-dependencies"], + buildSystem: buildSystem, + ) + // logs are in stderr + #expect(output.stderr.contains("Fetching \(prefix.appending("Foo").pathString)\n")) + #expect(output.stderr.contains("Fetching \(prefix.appending("Bar").pathString)\n")) + // results are in stdout + #expect(output.stdout.contains("foo<\(prefix.appending("Foo").pathString)@unspecified")) + #expect(output.stdout.contains("bar<\(prefix.appending("Bar").pathString)@unspecified")) + + let resolvedPackages: String = try localFileSystem.readFileContents(packageResolvedPath) + #expect(resolvedPackages.contains(prefix.appending("Foo").escapedPathString)) + #expect(resolvedPackages.contains(prefix.appending("Bar").escapedPathString)) + + try await executeSwiftBuild( + appPath, + configuration: configuration, + buildSystem: buildSystem, + ) + } - // run with mirror - do { - let output = try await executeSwiftPackage( + // clean + try localFileSystem.removeFileTree(appPath.appending(".build")) + try localFileSystem.removeFileTree(packageResolvedPath) + + // set mirror + _ = try await executeSwiftPackage( appPath, - extraArgs: ["show-dependencies"], - buildSystem: .native, + configuration: configuration, + extraArgs: [ + "config", + "set-mirror", + "--original-url", + prefix.appending("Bar").pathString, + "--mirror-url", + prefix.appending("BarMirror").pathString, + ], + buildSystem: buildSystem, ) - // logs are in stderr - XCTAssertMatch(output.stderr, .contains("Fetching \(prefix.appending("Foo").pathString)\n")) - XCTAssertMatch(output.stderr, .contains("Fetching \(prefix.appending("BarMirror").pathString)\n")) - XCTAssertNoMatch(output.stderr, .contains("Fetching \(prefix.appending("Bar").pathString)\n")) - // result are in stdout - XCTAssertMatch(output.stdout, .contains("foo<\(prefix.appending("Foo").pathString)@unspecified")) - XCTAssertMatch(output.stdout, .contains("barmirror<\(prefix.appending("BarMirror").pathString)@unspecified")) - XCTAssertNoMatch(output.stdout, .contains("bar<\(prefix.appending("Bar").pathString)@unspecified")) - - // rdar://52529014 mirrors should not be reflected in `Package.resolved` file - let resolvedPackages: String = try localFileSystem.readFileContents(packageResolvedPath) - XCTAssertMatch(resolvedPackages, .contains(prefix.appending("Foo").escapedPathString)) - XCTAssertMatch(resolvedPackages, .contains(prefix.appending("Bar").escapedPathString)) - XCTAssertNoMatch(resolvedPackages, .contains(prefix.appending("BarMirror").escapedPathString)) - - await XCTAssertBuilds(appPath, buildSystem: .native) + + // run with mirror + do { + let output = try await executeSwiftPackage( + appPath, + configuration: configuration, + extraArgs: ["show-dependencies"], + buildSystem: buildSystem, + ) + // logs are in stderr + #expect(output.stderr.contains("Fetching \(prefix.appending("Foo").pathString)\n")) + #expect(output.stderr.contains("Fetching \(prefix.appending("BarMirror").pathString)\n")) + #expect(!output.stderr.contains("Fetching \(prefix.appending("Bar").pathString)\n")) + // result are in stdout + #expect(output.stdout.contains("foo<\(prefix.appending("Foo").pathString)@unspecified")) + #expect( + output.stdout.contains( + "barmirror<\(prefix.appending("BarMirror").pathString)@unspecified" + ) + ) + #expect(!output.stdout.contains("bar<\(prefix.appending("Bar").pathString)@unspecified")) + + // rdar://52529014 mirrors should not be reflected in `Package.resolved` file + let resolvedPackages: String = try localFileSystem.readFileContents(packageResolvedPath) + #expect(resolvedPackages.contains(prefix.appending("Foo").escapedPathString)) + #expect(resolvedPackages.contains(prefix.appending("Bar").escapedPathString)) + #expect(!resolvedPackages.contains(prefix.appending("BarMirror").escapedPathString)) + + try await executeSwiftBuild( + appPath, + configuration: configuration, + buildSystem: buildSystem, + ) + } } + } when: { + ProcessInfo.hostOperatingSystem == .windows && buildSystem == .swiftbuild } } - func testPackageLookupCaseInsensitive() async throws { - try await fixtureXCTest(name: "DependencyResolution/External/PackageLookupCaseInsensitive") { fixturePath in + @Test( + .tags( + Tag.Feature.Command.Package.Update, + ), + arguments: SupportedBuildSystemOnAllPlatforms, + BuildConfiguration.allCases, + ) + func packageLookupCaseInsensitive( + buildSystem: BuildSystemProvider.Kind, + configuration: BuildConfiguration, + ) async throws { + try await fixture(name: "DependencyResolution/External/PackageLookupCaseInsensitive") { + fixturePath in try await executeSwiftPackage( fixturePath.appending("pkg"), + configuration: configuration, extraArgs: ["update"], - buildSystem: .native, + buildSystem: buildSystem, ) } } diff --git a/Tests/FunctionalTests/TraitTests.swift b/Tests/FunctionalTests/TraitTests.swift index e121b0988ca..9475ab9a5d8 100644 --- a/Tests/FunctionalTests/TraitTests.swift +++ b/Tests/FunctionalTests/TraitTests.swift @@ -29,8 +29,8 @@ struct TraitTests { @Test( .bug("https://github.com/swiftlang/swift-package-manager/issues/8511"), .bug("https://github.com/swiftlang/swift-package-manager/issues/8602"), - .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), - .bug("https://github.com/swiftlang/swift-build/issues/609"), + .IssueSwiftBuildLinuxRunnable, + .IssueProductTypeForObjectLibraries, .tags( Tag.Feature.Command.Run, ), @@ -73,8 +73,8 @@ struct TraitTests { @Test( .bug("https://github.com/swiftlang/swift-package-manager/issues/8511"), .bug("https://github.com/swiftlang/swift-package-manager/issues/8602"), - .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), - .bug("https://github.com/swiftlang/swift-build/issues/609"), + .IssueSwiftBuildLinuxRunnable, + .IssueProductTypeForObjectLibraries, .tags( Tag.Feature.Command.Run, ), @@ -126,8 +126,8 @@ struct TraitTests { @Test( .bug("https://github.com/swiftlang/swift-package-manager/issues/8511"), .bug("https://github.com/swiftlang/swift-package-manager/issues/8602"), - .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), - .bug("https://github.com/swiftlang/swift-build/issues/609"), + .IssueSwiftBuildLinuxRunnable, + .IssueProductTypeForObjectLibraries, .tags( Tag.Feature.Command.Run, ), @@ -139,7 +139,7 @@ struct TraitTests { ) async throws { try await withKnownIssue( """ - Linux: .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), + Linux: https://github.com/swiftlang/swift-package-manager/issues/8416, Windows: https://github.com/swiftlang/swift-build/issues/609 """, isIntermittent: (ProcessInfo.hostOperatingSystem == .windows), @@ -177,8 +177,8 @@ struct TraitTests { @Test( .bug("https://github.com/swiftlang/swift-package-manager/issues/8511"), .bug("https://github.com/swiftlang/swift-package-manager/issues/8602"), - .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), - .bug("https://github.com/swiftlang/swift-build/issues/609"), + .IssueSwiftBuildLinuxRunnable, + .IssueProductTypeForObjectLibraries, .tags( Tag.Feature.Command.Run, ), @@ -190,7 +190,7 @@ struct TraitTests { ) async throws { try await withKnownIssue( """ - Linux: .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), + Linux: https://github.com/swiftlang/swift-package-manager/issues/8416, Windows: https://github.com/swiftlang/swift-build/issues/609 """, isIntermittent: (ProcessInfo.hostOperatingSystem == .windows), @@ -232,8 +232,8 @@ struct TraitTests { @Test( .bug("https://github.com/swiftlang/swift-package-manager/issues/8511"), .bug("https://github.com/swiftlang/swift-package-manager/issues/8602"), - .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), - .bug("https://github.com/swiftlang/swift-build/issues/609"), + .IssueSwiftBuildLinuxRunnable, + .IssueProductTypeForObjectLibraries, .tags( Tag.Feature.Command.Run, ), @@ -244,7 +244,7 @@ struct TraitTests { configuration: BuildConfiguration, ) async throws { try await withKnownIssue(""" - Linux: .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), + Linux: https://github.com/swiftlang/swift-package-manager/issues/8416, """, isIntermittent: (ProcessInfo.hostOperatingSystem == .windows && buildSystem == .swiftbuild)) { try await fixture(name: "Traits") { fixturePath in @@ -274,8 +274,8 @@ struct TraitTests { @Test( .bug("https://github.com/swiftlang/swift-package-manager/issues/8511"), .bug("https://github.com/swiftlang/swift-package-manager/issues/8602"), - .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), - .bug("https://github.com/swiftlang/swift-build/issues/609"), + .IssueSwiftBuildLinuxRunnable, + .IssueProductTypeForObjectLibraries, .tags( Tag.Feature.Command.Run, ), @@ -286,7 +286,7 @@ struct TraitTests { configuration: BuildConfiguration, ) async throws { try await withKnownIssue(""" - Linux: .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), + Linux: https://github.com/swiftlang/swift-package-manager/issues/8416, Windows: https://github.com/swiftlang/swift-build/issues/609 """, isIntermittent: (ProcessInfo.hostOperatingSystem == .windows && buildSystem == .swiftbuild), @@ -321,8 +321,8 @@ struct TraitTests { @Test( .bug("https://github.com/swiftlang/swift-package-manager/issues/8511"), .bug("https://github.com/swiftlang/swift-package-manager/issues/8602"), - .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), - .bug("https://github.com/swiftlang/swift-build/issues/609"), + .IssueSwiftBuildLinuxRunnable, + .IssueProductTypeForObjectLibraries, .tags( Tag.Feature.Command.Run, ), @@ -334,7 +334,7 @@ struct TraitTests { ) async throws { try await withKnownIssue( """ - Linux: .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), + Linux: https://github.com/swiftlang/swift-package-manager/issues/8416, Windows: https://github.com/swiftlang/swift-build/issues/609 """, isIntermittent: (ProcessInfo.hostOperatingSystem == .windows), @@ -377,8 +377,8 @@ struct TraitTests { @Test( .bug("https://github.com/swiftlang/swift-package-manager/issues/8511"), .bug("https://github.com/swiftlang/swift-package-manager/issues/8602"), - .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), - .bug("https://github.com/swiftlang/swift-build/issues/609"), + .IssueSwiftBuildLinuxRunnable, + .IssueProductTypeForObjectLibraries, .tags( Tag.Feature.Command.Run, ), @@ -390,7 +390,7 @@ struct TraitTests { ) async throws { try await withKnownIssue( """ - Linux: .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), + Linux: https://github.com/swiftlang/swift-package-manager/issues/8416, Windows: https://github.com/swiftlang/swift-build/issues/609 """, isIntermittent: (ProcessInfo.hostOperatingSystem == .windows) @@ -495,7 +495,7 @@ struct TraitTests { } @Test( - .bug("https://github.com/swiftlang/swift-build/issues/609"), + .IssueProductTypeForObjectLibraries, .tags( Tag.Feature.Command.Test, ), @@ -580,7 +580,7 @@ struct TraitTests { } @Test( - .bug("https://github.com/swiftlang/swift-build/issues/609"), + .IssueProductTypeForObjectLibraries, .tags( Tag.Feature.Command.Package.Plugin, ), @@ -613,7 +613,7 @@ struct TraitTests { } @Test( - .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), + .IssueSwiftBuildLinuxRunnable, .tags( Tag.Feature.Command.Run, ), @@ -625,7 +625,7 @@ struct TraitTests { ) async throws { try await fixture(name: "Traits") { fixturePath in try await withKnownIssue(""" - Linux: .bug("https://github.com/swiftlang/swift-package-manager/issues/8416"), + Linux: https://github.com/swiftlang/swift-package-manager/issues/8416, """, isIntermittent: true, ) { diff --git a/Tests/IntegrationTests/SwiftPMTests.swift b/Tests/IntegrationTests/SwiftPMTests.swift index b0e17222fd4..5a016f47de0 100644 --- a/Tests/IntegrationTests/SwiftPMTests.swift +++ b/Tests/IntegrationTests/SwiftPMTests.swift @@ -82,10 +82,7 @@ private struct SwiftPMTests { } @Test( - .bug( - "https://github.com/swiftlang/swift-package-manager/issues/8416", - "[Linux] swift run using --build-system swiftbuild fails to run executable" - ), + .IssueSwiftBuildLinuxRunnable, .bug( "https://github.com/swiftlang/swift-package-manager/issues/8514", "[Windows] Integration test SwiftPMTests.packageInitExecutable with --build-system swiftbuild is skipped"