9
9
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
10
10
//
11
11
//===----------------------------------------------------------------------===//
12
- import XCTest
12
+ import Foundation
13
13
import SwiftDriver
14
14
import TSCBasic
15
+ import XCTest
15
16
16
17
final class SwiftDriverTests : XCTestCase {
17
18
func testParsing( ) throws {
@@ -1210,19 +1211,19 @@ final class SwiftDriverTests: XCTestCase {
1210
1211
XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
1211
1212
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . file, . relative( RelativePath ( " TestInputHeader.h " ) ) )
1212
1213
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . type, . objcHeader)
1214
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 1 )
1215
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . file, . temporary( RelativePath ( " TestInputHeader.pch " ) ) )
1216
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . type, . pch)
1213
1217
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -emit-pch " ) ) )
1214
- // TODO check outputs for pch
1218
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -o " ) ) )
1219
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . path( . temporary( RelativePath ( " TestInputHeader.pch " ) ) ) ) )
1215
1220
1216
1221
XCTAssertEqual ( plannedJobs [ 1 ] . kind, . compile)
1217
1222
XCTAssertEqual ( plannedJobs [ 1 ] . inputs. count, 1 )
1218
1223
XCTAssertEqual ( plannedJobs [ 1 ] . inputs [ 0 ] . file, try VirtualPath ( path: " foo.swift " ) )
1219
1224
XCTAssert ( plannedJobs [ 1 ] . commandLine. contains ( . flag( " -import-objc-header " ) ) )
1220
- // TODO check value of flag
1225
+ XCTAssert ( plannedJobs [ 1 ] . commandLine . contains ( . path ( . temporary ( RelativePath ( " TestInputHeader.pch " ) ) ) ) )
1221
1226
}
1222
- // ^^^^^^^^^^^^^
1223
- // RUN: %target-build-swift -typecheck -driver-print-jobs -import-objc-header %S/Inputs/bridging-header.h %s 2>&1 | %FileCheck %s -check-prefix=YESPCHJOB
1224
- // YESPCHJOB: {{.*}}swift{{c?(\.exe)?"?}} -frontend {{.*}} -emit-pch -o {{.*}}bridging-header-{{.*}}.pch
1225
- // YESPCHJOB: {{.*}}swift{{c?(\.exe)?"?}} -frontend {{.*}} -import-objc-header {{.*}}bridging-header-{{.*}}.pch
1226
1227
1227
1228
do {
1228
1229
var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -disable-bridging-pch " , " -import-objc-header " , " TestInputHeader.h " , " foo.swift " ] )
@@ -1244,10 +1245,14 @@ final class SwiftDriverTests: XCTestCase {
1244
1245
XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
1245
1246
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . file, . relative( RelativePath ( " TestInputHeader.h " ) ) )
1246
1247
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . type, . objcHeader)
1248
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 1 )
1249
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . file, . temporary( RelativePath ( " TestInputHeader.pch " ) ) )
1250
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . type, . pch)
1247
1251
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -emit-pch " ) ) )
1248
1252
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -index-store-path " ) ) )
1249
1253
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . path( try VirtualPath ( path: " idx " ) ) ) )
1250
- // TODO check outputs for pch
1254
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -o " ) ) )
1255
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . path( . temporary( RelativePath ( " TestInputHeader.pch " ) ) ) ) )
1251
1256
1252
1257
XCTAssertEqual ( plannedJobs [ 1 ] . kind, . compile)
1253
1258
XCTAssertEqual ( plannedJobs [ 1 ] . inputs. count, 1 )
@@ -1263,10 +1268,12 @@ final class SwiftDriverTests: XCTestCase {
1263
1268
XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
1264
1269
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . file, . relative( RelativePath ( " TestInputHeader.h " ) ) )
1265
1270
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . type, . objcHeader)
1271
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 1 )
1272
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . file, try VirtualPath ( path: " /pch/TestInputHeader.pch " ) )
1273
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . type, . pch)
1266
1274
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -emit-pch " ) ) )
1267
1275
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -pch-output-dir " ) ) )
1268
1276
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . path( try VirtualPath ( path: " /pch " ) ) ) )
1269
- // TODO check outputs for pch
1270
1277
1271
1278
XCTAssertEqual ( plannedJobs [ 1 ] . kind, . compile)
1272
1279
XCTAssertEqual ( plannedJobs [ 1 ] . inputs. count, 1 )
@@ -1283,10 +1290,12 @@ final class SwiftDriverTests: XCTestCase {
1283
1290
XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
1284
1291
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . file, . relative( RelativePath ( " TestInputHeader.h " ) ) )
1285
1292
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . type, . objcHeader)
1293
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 1 )
1294
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . file, try VirtualPath ( path: " /pch/TestInputHeader.pch " ) )
1295
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . type, . pch)
1286
1296
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -emit-pch " ) ) )
1287
1297
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -pch-output-dir " ) ) )
1288
1298
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . path( try VirtualPath ( path: " /pch " ) ) ) )
1289
- // TODO check outputs for pch
1290
1299
1291
1300
XCTAssertEqual ( plannedJobs [ 1 ] . kind, . compile)
1292
1301
XCTAssertEqual ( plannedJobs [ 1 ] . inputs. count, 1 )
@@ -1327,11 +1336,16 @@ final class SwiftDriverTests: XCTestCase {
1327
1336
XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
1328
1337
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . file, . relative( RelativePath ( " TestInputHeader.h " ) ) )
1329
1338
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . type, . objcHeader)
1330
- // TODO -serialize-diagnostics-path {{.*}}bridging-header-{{.*}}.dia{{"?}}
1339
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 2 )
1340
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . file, . temporary( RelativePath ( " TestInputHeader.dia " ) ) )
1341
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . type, . diagnostics)
1342
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 1 ] . file, try VirtualPath ( path: " /pch/TestInputHeader.pch " ) )
1343
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 1 ] . type, . pch)
1344
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -serialize-diagnostics-path " ) ) )
1345
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . path( . temporary( RelativePath ( " TestInputHeader.dia " ) ) ) ) )
1331
1346
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -emit-pch " ) ) )
1332
1347
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -pch-output-dir " ) ) )
1333
1348
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . path( try VirtualPath ( path: " /pch " ) ) ) )
1334
- // TODO check outputs for pch
1335
1349
1336
1350
XCTAssertEqual ( plannedJobs [ 1 ] . kind, . compile)
1337
1351
XCTAssertEqual ( plannedJobs [ 1 ] . inputs. count, 1 )
@@ -1342,22 +1356,32 @@ final class SwiftDriverTests: XCTestCase {
1342
1356
do {
1343
1357
var driver = try Driver ( args: [ " swiftc " , " -typecheck " , " -import-objc-header " , " TestInputHeader.h " , " -pch-output-dir " , " /pch " , " -serialize-diagnostics " , " foo.swift " , " -emit-module " , " -emit-module-path " , " /module-path-dir " ] )
1344
1358
let plannedJobs = try driver. planBuild ( )
1345
- XCTAssertEqual ( plannedJobs. count, 2 )
1359
+ XCTAssertEqual ( plannedJobs. count, 3 )
1346
1360
1347
1361
XCTAssertEqual ( plannedJobs [ 0 ] . kind, . generatePCH)
1348
1362
XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
1349
1363
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . file, . relative( RelativePath ( " TestInputHeader.h " ) ) )
1350
1364
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . type, . objcHeader)
1351
- // TODO -serialize-diagnostics-path {{.*}}/pch/bridging-header-{{.*}}.dia{{"?}}
1365
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 2 )
1366
+ XCTAssertNotNil ( plannedJobs [ 0 ] . outputs [ 0 ] . file. name. range ( of: #"/pch/TestInputHeader-.*.dia"# , options: . regularExpression) )
1367
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . type, . diagnostics)
1368
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 1 ] . file, try VirtualPath ( path: " /pch/TestInputHeader.pch " ) )
1369
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 1 ] . type, . pch)
1370
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -serialize-diagnostics-path " ) ) )
1371
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains {
1372
+ guard case . path( let path) = $0 else { return false }
1373
+ return path. name. range ( of: #"/pch/TestInputHeader-.*.dia"# , options: . regularExpression) != nil
1374
+ } )
1352
1375
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -emit-pch " ) ) )
1353
1376
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -pch-output-dir " ) ) )
1354
1377
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . path( try VirtualPath ( path: " /pch " ) ) ) )
1355
- // TODO check outputs for pch
1356
1378
1357
1379
XCTAssertEqual ( plannedJobs [ 1 ] . kind, . compile)
1358
1380
XCTAssertEqual ( plannedJobs [ 1 ] . inputs. count, 1 )
1359
1381
XCTAssertEqual ( plannedJobs [ 1 ] . inputs [ 0 ] . file, try VirtualPath ( path: " foo.swift " ) )
1360
1382
XCTAssert ( plannedJobs [ 1 ] . commandLine. contains ( . flag( " -pch-disable-validation " ) ) )
1383
+
1384
+ // FIXME: validate that merge module is correct job and that it has correct inputs and flags
1361
1385
}
1362
1386
1363
1387
do {
@@ -1369,10 +1393,12 @@ final class SwiftDriverTests: XCTestCase {
1369
1393
XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
1370
1394
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . file, . relative( RelativePath ( " TestInputHeader.h " ) ) )
1371
1395
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . type, . objcHeader)
1396
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 1 )
1397
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . file, try VirtualPath ( path: " /pch/TestInputHeader.pch " ) )
1398
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . type, . pch)
1372
1399
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -emit-pch " ) ) )
1373
1400
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -pch-output-dir " ) ) )
1374
1401
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . path( try VirtualPath ( path: " /pch " ) ) ) )
1375
- // TODO check outputs for pch
1376
1402
1377
1403
XCTAssertEqual ( plannedJobs [ 1 ] . kind, . compile)
1378
1404
XCTAssertEqual ( plannedJobs [ 1 ] . inputs. count, 1 )
@@ -1389,9 +1415,13 @@ final class SwiftDriverTests: XCTestCase {
1389
1415
XCTAssertEqual ( plannedJobs [ 0 ] . inputs. count, 1 )
1390
1416
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . file, . relative( RelativePath ( " TestInputHeader.h " ) ) )
1391
1417
XCTAssertEqual ( plannedJobs [ 0 ] . inputs [ 0 ] . type, . objcHeader)
1418
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs. count, 1 )
1419
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . file, . temporary( RelativePath ( " TestInputHeader.pch " ) ) )
1420
+ XCTAssertEqual ( plannedJobs [ 0 ] . outputs [ 0 ] . type, . pch)
1392
1421
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -O " ) ) )
1393
1422
XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -emit-pch " ) ) )
1394
- // TODO check outputs for pch
1423
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . flag( " -o " ) ) )
1424
+ XCTAssert ( plannedJobs [ 0 ] . commandLine. contains ( . path( . temporary( RelativePath ( " TestInputHeader.pch " ) ) ) ) )
1395
1425
1396
1426
XCTAssertEqual ( plannedJobs [ 1 ] . kind, . compile)
1397
1427
XCTAssertEqual ( plannedJobs [ 1 ] . inputs. count, 1 )
0 commit comments