Skip to content

Commit 8694d3c

Browse files
authored
Tests: Convert some WorkspaceTests module tests to Swift Testing (#8092)
1 parent 98726b9 commit 8694d3c

5 files changed

+270
-252
lines changed

Tests/WorkspaceTests/AuthorizationProviderTests.swift

+48-36
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,16 @@
99
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
1010
//
1111
//===----------------------------------------------------------------------===//
12+
import Foundation
1213

1314
@testable import Basics
1415
import _InternalTestSupport
1516
import Workspace
16-
import XCTest
17+
import Testing
1718

18-
final class AuthorizationProviderTests: XCTestCase {
19-
func testNetrcAuthorizationProviders() throws {
19+
fileprivate struct AuthorizationProviderTests {
20+
@Test
21+
func netrcAuthorizationProviders() throws {
2022
let observability = ObservabilitySystem.makeForTesting()
2123

2224
// custom .netrc file
@@ -32,19 +34,20 @@ final class AuthorizationProviderTests: XCTestCase {
3234

3335
let configuration = Workspace.Configuration.Authorization(netrc: .custom(customPath), keychain: .disabled)
3436
let authorizationProvider = try configuration.makeAuthorizationProvider(fileSystem: fileSystem, observabilityScope: observability.topScope) as? CompositeAuthorizationProvider
35-
let netrcProviders = authorizationProvider?.providers.compactMap { $0 as? NetrcAuthorizationProvider }
37+
let netrcProviders = try #require(authorizationProvider?.providers.compactMap { $0 as? NetrcAuthorizationProvider })
3638

37-
XCTAssertEqual(netrcProviders?.count, 1)
38-
XCTAssertEqual(try netrcProviders?.first.map { try resolveSymlinks($0.path) }, try resolveSymlinks(customPath))
39+
let expectedNetrcProvider = try resolveSymlinks(customPath)
40+
#expect(netrcProviders.count == 1)
41+
#expect(try netrcProviders.first.map { try resolveSymlinks($0.path) } == expectedNetrcProvider)
3942

40-
let auth = authorizationProvider?.authentication(for: "https://mymachine.labkey.org")
41-
XCTAssertEqual(auth?.user, "[email protected]")
42-
XCTAssertEqual(auth?.password, "custom")
43+
let auth = try #require(authorizationProvider?.authentication(for: "https://mymachine.labkey.org"))
44+
#expect(auth.user == "[email protected]")
45+
#expect(auth.password == "custom")
4346

4447
// delete it
4548
try fileSystem.removeFileTree(customPath)
46-
XCTAssertThrowsError(try configuration.makeAuthorizationProvider(fileSystem: fileSystem, observabilityScope: observability.topScope), "error expected") { error in
47-
XCTAssertEqual(error as? StringError, StringError("Did not find netrc file at \(customPath)."))
49+
#expect(throws: StringError("Did not find netrc file at \(customPath).")) {
50+
try configuration.makeAuthorizationProvider(fileSystem: fileSystem, observabilityScope: observability.topScope)
4851
}
4952
}
5053

@@ -61,25 +64,27 @@ final class AuthorizationProviderTests: XCTestCase {
6164

6265
let configuration = Workspace.Configuration.Authorization(netrc: .user, keychain: .disabled)
6366
let authorizationProvider = try configuration.makeAuthorizationProvider(fileSystem: fileSystem, observabilityScope: observability.topScope) as? CompositeAuthorizationProvider
64-
let netrcProviders = authorizationProvider?.providers.compactMap { $0 as? NetrcAuthorizationProvider }
67+
let netrcProviders = try #require(authorizationProvider?.providers.compactMap { $0 as? NetrcAuthorizationProvider })
6568

66-
XCTAssertEqual(netrcProviders?.count, 1)
67-
XCTAssertEqual(try netrcProviders?.first.map { try resolveSymlinks($0.path) }, try resolveSymlinks(userPath))
69+
let expectedNetrcProvider = try resolveSymlinks(userPath)
70+
#expect(netrcProviders.count == 1)
71+
#expect(try netrcProviders.first.map { try resolveSymlinks($0.path) } == expectedNetrcProvider)
6872

69-
let auth = authorizationProvider?.authentication(for: "https://mymachine.labkey.org")
70-
XCTAssertEqual(auth?.user, "[email protected]")
71-
XCTAssertEqual(auth?.password, "user")
73+
let auth = try #require(authorizationProvider?.authentication(for: "https://mymachine.labkey.org"))
74+
#expect(auth.user == "[email protected]")
75+
#expect(auth.password == "user")
7276

7377
// delete it
7478
do {
7579
try fileSystem.removeFileTree(userPath)
7680
let authorizationProvider = try configuration.makeAuthorizationProvider(fileSystem: fileSystem, observabilityScope: observability.topScope) as? CompositeAuthorizationProvider
77-
XCTAssertNil(authorizationProvider)
81+
#expect(authorizationProvider == nil)
7882
}
7983
}
8084
}
8185

82-
func testRegistryNetrcAuthorizationProviders() throws {
86+
@Test
87+
func registryNetrcAuthorizationProviders() throws {
8388
let observability = ObservabilitySystem.makeForTesting()
8489

8590
// custom .netrc file
@@ -97,17 +102,18 @@ final class AuthorizationProviderTests: XCTestCase {
97102
let configuration = Workspace.Configuration.Authorization(netrc: .custom(customPath), keychain: .disabled)
98103
let netrcProvider = try configuration.makeRegistryAuthorizationProvider(fileSystem: fileSystem, observabilityScope: observability.topScope) as? NetrcAuthorizationProvider
99104

100-
XCTAssertNotNil(netrcProvider)
101-
XCTAssertEqual(try netrcProvider.map { try resolveSymlinks($0.path) }, try resolveSymlinks(customPath))
105+
let expectedNetrcProvider = try resolveSymlinks(customPath)
106+
#expect(netrcProvider != nil)
107+
#expect(try netrcProvider.map { try resolveSymlinks($0.path) } == expectedNetrcProvider)
102108

103-
let auth = netrcProvider?.authentication(for: "https://mymachine.labkey.org")
104-
XCTAssertEqual(auth?.user, "[email protected]")
105-
XCTAssertEqual(auth?.password, "custom")
109+
let auth = try #require(netrcProvider?.authentication(for: "https://mymachine.labkey.org"))
110+
#expect(auth.user == "[email protected]")
111+
#expect(auth.password == "custom")
106112

107113
// delete it
108114
try fileSystem.removeFileTree(customPath)
109-
XCTAssertThrowsError(try configuration.makeRegistryAuthorizationProvider(fileSystem: fileSystem, observabilityScope: observability.topScope), "error expected") { error in
110-
XCTAssertEqual(error as? StringError, StringError("did not find netrc file at \(customPath)"))
115+
#expect(throws: StringError("did not find netrc file at \(customPath)")) {
116+
try configuration.makeRegistryAuthorizationProvider(fileSystem: fileSystem, observabilityScope: observability.topScope)
111117
}
112118
}
113119

@@ -126,22 +132,28 @@ final class AuthorizationProviderTests: XCTestCase {
126132
let configuration = Workspace.Configuration.Authorization(netrc: .user, keychain: .disabled)
127133
let netrcProvider = try configuration.makeRegistryAuthorizationProvider(fileSystem: fileSystem, observabilityScope: observability.topScope) as? NetrcAuthorizationProvider
128134

129-
XCTAssertNotNil(netrcProvider)
130-
XCTAssertEqual(try netrcProvider.map { try resolveSymlinks($0.path) }, try resolveSymlinks(userPath))
135+
let expectedNetrcProvider = try resolveSymlinks(userPath)
136+
#expect(netrcProvider != nil)
137+
#expect(try netrcProvider.map { try resolveSymlinks($0.path) } == expectedNetrcProvider)
131138

132-
let auth = netrcProvider?.authentication(for: "https://mymachine.labkey.org")
133-
XCTAssertEqual(auth?.user, "[email protected]")
134-
XCTAssertEqual(auth?.password, "user")
139+
let auth = try #require(netrcProvider?.authentication(for: "https://mymachine.labkey.org"))
140+
#expect(auth.user == "[email protected]")
141+
#expect(auth.password == "user")
135142

136143
// delete it
137144
do {
138145
try fileSystem.removeFileTree(userPath)
139-
let authorizationProvider = try configuration.makeRegistryAuthorizationProvider(fileSystem: fileSystem, observabilityScope: observability.topScope) as? NetrcAuthorizationProvider
146+
let authorizationProviderOpt =
147+
try configuration.makeRegistryAuthorizationProvider(
148+
fileSystem: fileSystem,
149+
observabilityScope: observability.topScope,
150+
) as? NetrcAuthorizationProvider
140151
// Even if user .netrc file doesn't exist, the provider will be non-nil but contain no data.
141-
XCTAssertNotNil(authorizationProvider)
142-
XCTAssertEqual(try authorizationProvider.map { try resolveSymlinks($0.path) }, try resolveSymlinks(userPath))
143-
144-
XCTAssertTrue(authorizationProvider!.machines.isEmpty)
152+
let expectedAuthorizationProvider = try resolveSymlinks(userPath)
153+
let authorizationProvider: NetrcAuthorizationProvider = try #require(
154+
authorizationProviderOpt)
155+
#expect(authorizationProvider.path == expectedAuthorizationProvider)
156+
#expect(authorizationProvider.machines.isEmpty)
145157
}
146158
}
147159
}

Tests/WorkspaceTests/MirrorsConfigurationTests.swift

+32-26
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@
1313
import Basics
1414
import _InternalTestSupport
1515
import Workspace
16-
import XCTest
16+
import Testing
1717

18-
final class MirrorsConfigurationTests: XCTestCase {
19-
func testLoadingSchema1() throws {
18+
fileprivate struct MirrorsConfigurationTests {
19+
@Test
20+
func loadingSchema1() throws {
2021
let fs = InMemoryFileSystem()
2122
let configFile = AbsolutePath("/config/mirrors.json")
2223

@@ -42,70 +43,75 @@ final class MirrorsConfigurationTests: XCTestCase {
4243
let config = Workspace.Configuration.MirrorsStorage(path: configFile, fileSystem: fs, deleteWhenEmpty: true)
4344
let mirrors = try config.get()
4445

45-
XCTAssertEqual(mirrors.mirror(for: originalURL),mirrorURL)
46-
XCTAssertEqual(mirrors.original(for: mirrorURL), originalURL)
46+
#expect(mirrors.mirror(for: originalURL) == mirrorURL)
47+
#expect(mirrors.original(for: mirrorURL) == originalURL)
4748
}
4849

49-
func testThrowsWhenNotFound() throws {
50+
@Test
51+
func throwsWhenNotFound() throws {
52+
let gitUrl = "https://github.com/apple/swift-argument-parser.git"
5053
let fs = InMemoryFileSystem()
5154
let configFile = AbsolutePath("/config/mirrors.json")
5255

5356
let config = Workspace.Configuration.MirrorsStorage(path: configFile, fileSystem: fs, deleteWhenEmpty: true)
5457
let mirrors = try config.get()
5558

56-
XCTAssertThrows(StringError("Mirror not found for 'https://github.com/apple/swift-argument-parser.git'")) {
57-
try mirrors.unset(originalOrMirror: "https://github.com/apple/swift-argument-parser.git")
59+
#expect(throws: StringError("Mirror not found for '\(gitUrl)'")) {
60+
try mirrors.unset(originalOrMirror: gitUrl)
5861
}
5962
}
6063

61-
func testDeleteWhenEmpty() throws {
64+
@Test
65+
func deleteWhenEmpty() throws {
6266
let fs = InMemoryFileSystem()
6367
let configFile = AbsolutePath("/config/mirrors.json")
6468

6569
let config = Workspace.Configuration.MirrorsStorage(path: configFile, fileSystem: fs, deleteWhenEmpty: true)
6670

6771
try config.apply{ _ in }
68-
XCTAssertFalse(fs.exists(configFile))
72+
#expect(!fs.exists(configFile))
6973

7074
let originalURL = "https://github.com/apple/swift-argument-parser.git"
7175
let mirrorURL = "https://github.com/mona/swift-argument-parser.git"
7276

7377
try config.apply{ mirrors in
7478
try mirrors.set(mirror: mirrorURL, for: originalURL)
7579
}
76-
XCTAssertTrue(fs.exists(configFile))
80+
#expect(fs.exists(configFile))
7781

7882
try config.apply{ mirrors in
7983
try mirrors.unset(originalOrMirror: originalURL)
8084
}
81-
XCTAssertFalse(fs.exists(configFile))
85+
#expect(!fs.exists(configFile))
8286
}
8387

84-
func testDontDeleteWhenEmpty() throws {
88+
@Test
89+
func dontDeleteWhenEmpty() throws {
8590
let fs = InMemoryFileSystem()
8691
let configFile = AbsolutePath("/config/mirrors.json")
8792

8893
let config = Workspace.Configuration.MirrorsStorage(path: configFile, fileSystem: fs, deleteWhenEmpty: false)
8994

9095
try config.apply{ _ in }
91-
XCTAssertFalse(fs.exists(configFile))
96+
#expect(!fs.exists(configFile))
9297

9398
let originalURL = "https://github.com/apple/swift-argument-parser.git"
9499
let mirrorURL = "https://github.com/mona/swift-argument-parser.git"
95100

96101
try config.apply{ mirrors in
97102
try mirrors.set(mirror: mirrorURL, for: originalURL)
98103
}
99-
XCTAssertTrue(fs.exists(configFile))
104+
#expect(fs.exists(configFile))
100105

101106
try config.apply{ mirrors in
102107
try mirrors.unset(originalOrMirror: originalURL)
103108
}
104-
XCTAssertTrue(fs.exists(configFile))
105-
XCTAssertTrue(try config.get().isEmpty)
109+
#expect(fs.exists(configFile))
110+
#expect(try config.get().isEmpty)
106111
}
107112

108-
func testLocalAndShared() throws {
113+
@Test
114+
func localAndShared() throws {
109115
let fs = InMemoryFileSystem()
110116
let localConfigFile = AbsolutePath("/config/local-mirrors.json")
111117
let sharedConfigFile = AbsolutePath("/config/shared-mirrors.json")
@@ -125,9 +131,9 @@ final class MirrorsConfigurationTests: XCTestCase {
125131
try mirrors.set(mirror: mirror1URL, for: original1URL)
126132
}
127133

128-
XCTAssertEqual(config.mirrors.count, 1)
129-
XCTAssertEqual(config.mirrors.mirror(for: original1URL), mirror1URL)
130-
XCTAssertEqual(config.mirrors.original(for: mirror1URL), original1URL)
134+
#expect(config.mirrors.count == 1)
135+
#expect(config.mirrors.mirror(for: original1URL) == mirror1URL)
136+
#expect(config.mirrors.original(for: mirror1URL) == original1URL)
131137

132138
// now write to local location
133139

@@ -138,12 +144,12 @@ final class MirrorsConfigurationTests: XCTestCase {
138144
try mirrors.set(mirror: mirror2URL, for: original2URL)
139145
}
140146

141-
XCTAssertEqual(config.mirrors.count, 1)
142-
XCTAssertEqual(config.mirrors.mirror(for: original2URL), mirror2URL)
143-
XCTAssertEqual(config.mirrors.original(for: mirror2URL), original2URL)
147+
#expect(config.mirrors.count == 1)
148+
#expect(config.mirrors.mirror(for: original2URL) == mirror2URL)
149+
#expect(config.mirrors.original(for: mirror2URL) == original2URL)
144150

145151
// should not see the shared any longer
146-
XCTAssertEqual(config.mirrors.mirror(for: original1URL), nil)
147-
XCTAssertEqual(config.mirrors.original(for: mirror1URL), nil)
152+
#expect(config.mirrors.mirror(for: original1URL) == nil)
153+
#expect(config.mirrors.original(for: mirror1URL) == nil)
148154
}
149155
}

Tests/WorkspaceTests/ToolsVersionSpecificationGenerationTests.swift

+26-17
Original file line numberDiff line numberDiff line change
@@ -9,36 +9,45 @@
99
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
1010
//
1111
//===----------------------------------------------------------------------===//
12+
import Foundation
1213

1314
///
1415
/// This file tests the generation of a Swift tools version specification from a known version.
1516
///
1617

17-
import XCTest
18+
import Testing
1819
import PackageModel
1920

2021
import struct TSCUtility.Version
2122

2223
/// Test cases for the generation of Swift tools version specifications.
23-
class ToolsVersionSpecificationGenerationTests: XCTestCase {
24+
fileprivate struct ToolsVersionSpecificationGenerationTests {
2425
/// Tests the generation of Swift tools version specifications.
25-
func testToolsVersionSpecificationGeneration() throws {
26+
@Test
27+
func toolsVersionSpecificationGeneration() throws {
2628
let versionWithNonZeroPatch = ToolsVersion(version: Version(4, 3, 2))
27-
XCTAssertEqual(versionWithNonZeroPatch.specification(), "// swift-tools-version:4.3.2")
28-
XCTAssertEqual(versionWithNonZeroPatch.specification(roundedTo: .automatic), "// swift-tools-version:4.3.2")
29-
XCTAssertEqual(versionWithNonZeroPatch.specification(roundedTo: .minor), "// swift-tools-version:4.3")
30-
XCTAssertEqual(versionWithNonZeroPatch.specification(roundedTo: .patch), "// swift-tools-version:4.3.2")
31-
29+
#expect(versionWithNonZeroPatch.specification() == "// swift-tools-version:4.3.2")
30+
#expect(versionWithNonZeroPatch.specification(roundedTo: .automatic) == "// swift-tools-version:4.3.2")
31+
#expect(versionWithNonZeroPatch.specification(roundedTo: .minor) == "// swift-tools-version:4.3")
32+
#expect(versionWithNonZeroPatch.specification(roundedTo: .patch) == "// swift-tools-version:4.3.2")
33+
3234
let versionWithZeroPatch = ToolsVersion.v5_3 // 5.3.0
33-
XCTAssertEqual(versionWithZeroPatch.specification(), "// swift-tools-version:5.3")
34-
XCTAssertEqual(versionWithZeroPatch.specification(roundedTo: .automatic), "// swift-tools-version:5.3")
35-
XCTAssertEqual(versionWithZeroPatch.specification(roundedTo: .minor), "// swift-tools-version:5.3")
36-
XCTAssertEqual(versionWithZeroPatch.specification(roundedTo: .patch), "// swift-tools-version:5.3.0")
37-
35+
#expect(versionWithZeroPatch.specification() == "// swift-tools-version:5.3")
36+
#expect(versionWithZeroPatch.specification(roundedTo: .automatic) == "// swift-tools-version:5.3")
37+
#expect(versionWithZeroPatch.specification(roundedTo: .minor) == "// swift-tools-version:5.3")
38+
#expect(versionWithZeroPatch.specification(roundedTo: .patch) == "// swift-tools-version:5.3.0")
39+
3840
let newMajorVersion = ToolsVersion.v5 // 5.0.0
39-
XCTAssertEqual(newMajorVersion.specification(), "// swift-tools-version:5.0")
40-
XCTAssertEqual(newMajorVersion.specification(roundedTo: .automatic), "// swift-tools-version:5.0")
41-
XCTAssertEqual(newMajorVersion.specification(roundedTo: .minor), "// swift-tools-version:5.0")
42-
XCTAssertEqual(newMajorVersion.specification(roundedTo: .patch), "// swift-tools-version:5.0.0")
41+
#expect(newMajorVersion.specification() == "// swift-tools-version:5.0")
42+
#expect(newMajorVersion.specification(roundedTo: .automatic) == "// swift-tools-version:5.0")
43+
#expect(newMajorVersion.specification(roundedTo: .minor) == "// swift-tools-version:5.0")
44+
#expect(newMajorVersion.specification(roundedTo: .patch) == "// swift-tools-version:5.0.0")
45+
46+
let allZeroVersion = ToolsVersion(version: Version(0, 0, 0))
47+
#expect(allZeroVersion.specification() == "// swift-tools-version:0.0")
48+
#expect(allZeroVersion.specification(roundedTo: .automatic) == "// swift-tools-version:0.0")
49+
#expect(allZeroVersion.specification(roundedTo: .minor) == "// swift-tools-version:0.0")
50+
#expect(allZeroVersion.specification(roundedTo: .patch) == "// swift-tools-version:0.0.0")
4351
}
52+
4453
}

0 commit comments

Comments
 (0)