@@ -132,62 +132,77 @@ final class SwiftDriverTests: XCTestCase {
132
132
}
133
133
134
134
func testDebugSettings( ) throws {
135
- let driver1 = try Driver ( args: [ " swiftc " , " foo.swift " , " -emit-module " ] )
136
- XCTAssertNil ( driver1. debugInfoLevel)
137
- XCTAssertEqual ( driver1. debugInfoFormat, . dwarf)
138
-
139
- let driver2 = try Driver ( args: [ " swiftc " , " foo.swift " , " -emit-module " , " -g " ] )
140
- XCTAssertEqual ( driver2. debugInfoLevel, . astTypes)
141
- XCTAssertEqual ( driver2. debugInfoFormat, . dwarf)
135
+ try assertNoDriverDiagnostics ( args: " swiftc " , " foo.swift " , " -emit-module " ) { driver in
136
+ XCTAssertNil ( driver. debugInfoLevel)
137
+ XCTAssertEqual ( driver. debugInfoFormat, . dwarf)
138
+ }
142
139
143
- let driver3 = try Driver ( args: [ " swiftc " , " -g " , " foo.swift " , " -gline-tables-only " ] )
144
- XCTAssertEqual ( driver3. debugInfoLevel, . lineTables)
145
- XCTAssertEqual ( driver3. debugInfoFormat, . dwarf)
140
+ try assertNoDriverDiagnostics ( args: " swiftc " , " foo.swift " , " -emit-module " , " -g " ) { driver in
141
+ XCTAssertEqual ( driver. debugInfoLevel, . astTypes)
142
+ XCTAssertEqual ( driver. debugInfoFormat, . dwarf)
143
+ }
146
144
147
- let driver4 = try Driver ( args: [ " swiftc " , " foo.swift " , " -emit-module " , " -g " , " -debug-info-format=codeview " ] )
148
- XCTAssertEqual ( driver4. debugInfoLevel, . astTypes)
149
- XCTAssertEqual ( driver4. debugInfoFormat, . codeView)
145
+ try assertNoDriverDiagnostics ( args: " swiftc " , " -g " , " foo.swift " , " -gline-tables-only " ) { driver in
146
+ XCTAssertEqual ( driver. debugInfoLevel, . lineTables)
147
+ XCTAssertEqual ( driver. debugInfoFormat, . dwarf)
148
+ }
150
149
151
- let driver5 = try Driver ( args: [ " swiftc " , " foo.swift " , " -emit-module " , " -debug-info-format=dwarf " ] )
152
- XCTAssertEqual ( driver5. diagnosticEngine. diagnostics. map { $0. localizedDescription} , [ " option '-debug-info-format=' is missing a required argument (-g) " ] )
150
+ try assertNoDriverDiagnostics ( args: " swiftc " , " foo.swift " , " -emit-module " , " -g " , " -debug-info-format=codeview " ) { driver in
151
+ XCTAssertEqual ( driver. debugInfoLevel, . astTypes)
152
+ XCTAssertEqual ( driver. debugInfoFormat, . codeView)
153
+ }
153
154
154
- let driver6 = try Driver ( args: [ " swiftc " , " foo.swift " , " -emit-module " , " -g " , " -debug-info-format=notdwarf " ] )
155
- XCTAssertEqual ( driver6. diagnosticEngine. diagnostics. map { $0. localizedDescription} , [ " invalid value 'notdwarf' in '-debug-info-format=' " ] )
155
+ try assertDriverDiagnostics ( args: " swiftc " , " foo.swift " , " -emit-module " , " -debug-info-format=dwarf " ) {
156
+ $1. expect ( . error( " option '-debug-info-format=' is missing a required argument (-g) " ) )
157
+ }
156
158
157
- let driver7 = try Driver ( args: [ " swiftc " , " foo.swift " , " -emit-module " , " -gdwarf-types " , " -debug-info-format=codeview " ] )
158
- XCTAssertEqual ( driver7. diagnosticEngine. diagnostics. map { $0. localizedDescription} , [ " argument 'codeview' is not allowed with '-gdwarf-types' " ] )
159
+ try assertDriverDiagnostics ( args: " swiftc " , " foo.swift " , " -emit-module " , " -g " , " -debug-info-format=notdwarf " ) {
160
+ $1. expect ( . error( " invalid value 'notdwarf' in '-debug-info-format=' " ) )
161
+ }
162
+
163
+ try assertDriverDiagnostics ( args: " swiftc " , " foo.swift " , " -emit-module " , " -gdwarf-types " , " -debug-info-format=codeview " ) {
164
+ $1. expect ( . error( " argument 'codeview' is not allowed with '-gdwarf-types' " ) )
165
+ }
159
166
}
160
167
161
168
func testModuleSettings( ) throws {
162
- let driver1 = try Driver ( args: [ " swiftc " , " foo.swift " ] )
163
- XCTAssertNil ( driver1. moduleOutput)
164
- XCTAssertEqual ( driver1. moduleName, " foo " )
165
-
166
- let driver2 = try Driver ( args: [ " swiftc " , " foo.swift " , " -g " ] )
167
- XCTAssertEqual ( driver2. moduleOutput, ModuleOutput . auxiliary ( VirtualPath . temporary ( RelativePath ( " foo.swiftmodule " ) ) ) )
168
- XCTAssertEqual ( driver2. moduleName, " foo " )
169
-
170
- let driver3 = try Driver ( args: [ " swiftc " , " foo.swift " , " -module-name " , " wibble " , " bar.swift " , " -g " ] )
171
- XCTAssertEqual ( driver3. moduleOutput, ModuleOutput . auxiliary ( VirtualPath . temporary ( RelativePath ( " wibble.swiftmodule " ) ) ) )
172
- XCTAssertEqual ( driver3. moduleName, " wibble " )
169
+ try assertNoDriverDiagnostics ( args: " swiftc " , " foo.swift " ) { driver in
170
+ XCTAssertNil ( driver. moduleOutput)
171
+ XCTAssertEqual ( driver. moduleName, " foo " )
172
+ }
173
173
174
- let driver4 = try Driver ( args: [ " swiftc " , " -emit-module " , " foo.swift " , " -module-name " , " wibble " , " bar.swift " ] )
175
- XCTAssertEqual ( driver4. moduleOutput, ModuleOutput . topLevel ( try VirtualPath ( path: " wibble.swiftmodule " ) ) )
176
- XCTAssertEqual ( driver4. moduleName, " wibble " )
174
+ try assertNoDriverDiagnostics ( args: " swiftc " , " foo.swift " , " -g " ) { driver in
175
+ XCTAssertEqual ( driver. moduleOutput, ModuleOutput . auxiliary ( VirtualPath . temporary ( RelativePath ( " foo.swiftmodule " ) ) ) )
176
+ XCTAssertEqual ( driver. moduleName, " foo " )
177
+ }
177
178
178
- let driver5 = try Driver ( args: [ " swiftc " , " foo.swift " , " bar.swift " ] )
179
- XCTAssertNil ( driver5. moduleOutput)
180
- XCTAssertEqual ( driver5. moduleName, " main " )
179
+ try assertNoDriverDiagnostics ( args: " swiftc " , " foo.swift " , " -module-name " , " wibble " , " bar.swift " , " -g " ) { driver in
180
+ XCTAssertEqual ( driver. moduleOutput, ModuleOutput . auxiliary ( VirtualPath . temporary ( RelativePath ( " wibble.swiftmodule " ) ) ) )
181
+ XCTAssertEqual ( driver. moduleName, " wibble " )
182
+ }
181
183
182
- let driver6 = try Driver ( args: [ " swiftc " , " -repl " ] )
183
- XCTAssertNil ( driver6. moduleOutput)
184
- XCTAssertEqual ( driver6. moduleName, " REPL " )
184
+ try assertNoDriverDiagnostics ( args: " swiftc " , " -emit-module " , " foo.swift " , " -module-name " , " wibble " , " bar.swift " ) { driver in
185
+ XCTAssertEqual ( driver. moduleOutput, ModuleOutput . topLevel ( try VirtualPath ( path: " wibble.swiftmodule " ) ) )
186
+ XCTAssertEqual ( driver. moduleName, " wibble " )
187
+ }
185
188
186
- let driver7 = try Driver ( args: [ " swiftc " , " foo.swift " , " bar.swift " , " -emit-library " , " -o " , " libWibble.so " ] )
187
- XCTAssertEqual ( driver7. moduleName, " Wibble " )
189
+ try assertNoDriverDiagnostics ( args: " swiftc " , " foo.swift " , " bar.swift " ) { driver in
190
+ XCTAssertNil ( driver. moduleOutput)
191
+ XCTAssertEqual ( driver. moduleName, " main " )
192
+ }
193
+
194
+ try assertNoDriverDiagnostics ( args: " swiftc " , " -repl " ) { driver in
195
+ XCTAssertNil ( driver. moduleOutput)
196
+ XCTAssertEqual ( driver. moduleName, " REPL " )
197
+ }
198
+
199
+ try assertNoDriverDiagnostics ( args: " swiftc " , " foo.swift " , " bar.swift " , " -emit-library " , " -o " , " libWibble.so " ) { driver in
200
+ XCTAssertEqual ( driver. moduleName, " Wibble " )
201
+ }
188
202
189
- let driver8 = try Driver ( args: [ " swiftc " , " foo.swift " , " bar.swift " , " -emit-library " , " -o " , " libWibble.so " , " -module-name " , " Swift " ] )
190
- XCTAssertEqual ( driver8. diagnosticEngine. diagnostics. map { $0. localizedDescription} , [ " module name \" Swift \" is reserved for the standard library " ] )
203
+ try assertDriverDiagnostics ( args: " swiftc " , " foo.swift " , " bar.swift " , " -emit-library " , " -o " , " libWibble.so " , " -module-name " , " Swift " ) {
204
+ $1. expect ( . error_stdlib_module_name( moduleName: " Swift " , explicitModuleName: true ) )
205
+ }
191
206
}
192
207
193
208
func testModuleNameFallbacks( ) throws {
0 commit comments