@@ -38,6 +38,32 @@ final class EndToEndTests: XCTestCase {
38
38
private let logger = Logger ( label: " swift-sdk-generator " )
39
39
40
40
#if !os(macOS)
41
+ func buildSDK( inDirectory packageDirectory: FilePath , withArguments runArguments: String ) async throws -> String {
42
+ let generatorOutput = try await Shell . readStdout (
43
+ " cd \( packageDirectory) && swift run swift-sdk-generator \( runArguments) "
44
+ )
45
+
46
+ let installCommand = try XCTUnwrap ( generatorOutput. split ( separator: " \n " ) . first {
47
+ $0. contains ( " swift experimental-sdk install " )
48
+ } )
49
+
50
+ let bundleName = try XCTUnwrap (
51
+ FilePath ( String ( XCTUnwrap ( installCommand. split ( separator: " " ) . last) ) ) . components. last
52
+ ) . stem
53
+
54
+ let installedSDKs = try await Shell . readStdout ( " swift experimental-sdk list " ) . components ( separatedBy: " \n " )
55
+
56
+ // Make sure this bundle hasn't been installed already.
57
+ if installedSDKs. contains ( bundleName) {
58
+ try await Shell . run ( " swift experimental-sdk remove \( bundleName) " )
59
+ }
60
+
61
+ let installOutput = try await Shell . readStdout ( String ( installCommand) )
62
+ XCTAssertTrue ( installOutput. contains ( " successfully installed " ) )
63
+
64
+ return bundleName
65
+ }
66
+
41
67
func testPackageInitExecutable( ) async throws {
42
68
throw XCTSkip ( " EndToEnd tests currently deadlock under `swift test`: https://github.com/swiftlang/swift-sdk-generator/issues/143 " )
43
69
@@ -58,24 +84,7 @@ final class EndToEndTests: XCTestCase {
58
84
}
59
85
60
86
for runArguments in possibleArguments {
61
- let generatorOutput = try await Shell . readStdout (
62
- " cd \( packageDirectory) && swift run swift-sdk-generator \( runArguments) "
63
- )
64
-
65
- let installCommand = try XCTUnwrap ( generatorOutput. split ( separator: " \n " ) . first {
66
- $0. contains ( " swift experimental-sdk install " )
67
- } )
68
-
69
- let bundleName = try XCTUnwrap (
70
- FilePath ( String ( XCTUnwrap ( installCommand. split ( separator: " " ) . last) ) ) . components. last
71
- ) . stem
72
-
73
- let installedSDKs = try await Shell . readStdout ( " swift experimental-sdk list " ) . components ( separatedBy: " \n " )
74
-
75
- // Make sure this bundle hasn't been installed already.
76
- if installedSDKs. contains ( bundleName) {
77
- try await Shell . run ( " swift experimental-sdk remove \( bundleName) " )
78
- }
87
+ let bundleName = try await buildSDK ( inDirectory: packageDirectory, withArguments: runArguments)
79
88
80
89
let installOutput = try await Shell . readStdout ( String ( installCommand) )
81
90
XCTAssertTrue ( installOutput. contains ( " successfully installed " ) )
@@ -121,15 +130,8 @@ final class EndToEndTests: XCTestCase {
121
130
}
122
131
123
132
for runArguments in possibleArguments {
124
- let firstGeneratorOutput = try await Shell . readStdout (
125
- " cd \( packageDirectory) && swift run swift-sdk-generator \( runArguments) "
126
- )
127
- XCTAssert ( firstGeneratorOutput. contains ( " swift experimental-sdk install " ) )
128
-
129
- let repeatGeneratorOutput = try await Shell . readStdout (
130
- " cd \( packageDirectory) && swift run swift-sdk-generator \( runArguments) "
131
- )
132
- XCTAssert ( repeatGeneratorOutput. contains ( " swift experimental-sdk install " ) )
133
+ let _ = try await buildSDK ( inDirectory: packageDirectory, withArguments: runArguments)
134
+ let _ = try await buildSDK ( inDirectory: packageDirectory, withArguments: runArguments)
133
135
}
134
136
}
135
137
#endif
0 commit comments