@@ -205,6 +205,8 @@ private func checkCachingBuildJobDependencies(job: Job,
205
205
206
206
207
207
final class CachingBuildTests : XCTestCase {
208
+ let dependencyOracle = InterModuleDependencyOracle ( )
209
+
208
210
override func setUpWithError( ) throws {
209
211
try super. setUpWithError ( )
210
212
@@ -499,12 +501,12 @@ final class CachingBuildTests: XCTestCase {
499
501
" -cache-compile-job " , " -cas-path " , casPath. nativePathString ( escaped: true ) ,
500
502
" -working-directory " , path. nativePathString ( escaped: true ) ,
501
503
main. nativePathString ( escaped: true ) ] + sdkArgumentsForTesting,
502
- env: ProcessEnv . vars)
504
+ env: ProcessEnv . vars,
505
+ interModuleDependencyOracle: dependencyOracle)
503
506
let jobs = try driver. planBuild ( )
504
507
try driver. run ( jobs: jobs)
505
508
XCTAssertFalse ( driver. diagnosticEngine. hasErrors)
506
509
507
- let dependencyOracle = InterModuleDependencyOracle ( )
508
510
let scanLibPath = try XCTUnwrap ( driver. toolchain. lookupSwiftScanLib ( ) )
509
511
guard try dependencyOracle
510
512
. verifyOrCreateScannerInstance ( fileSystem: localFileSystem,
@@ -513,7 +515,12 @@ final class CachingBuildTests: XCTestCase {
513
515
return
514
516
}
515
517
516
- let cas = try dependencyOracle. createCAS ( pluginPath: nil , onDiskPath: casPath, pluginOptions: [ ] )
518
+ let cas = try dependencyOracle. getOrCreateCAS ( pluginPath: nil , onDiskPath: casPath, pluginOptions: [ ] )
519
+ if let driverCAS = driver. cas {
520
+ XCTAssertEqual ( cas, driverCAS, " CAS should only be created once " )
521
+ } else {
522
+ XCTFail ( " Cached compilation doesn't have a CAS " )
523
+ }
517
524
try checkCASForResults ( jobs: jobs, cas: cas, fs: driver. fileSystem)
518
525
}
519
526
}
@@ -556,9 +563,9 @@ final class CachingBuildTests: XCTestCase {
556
563
" -pch-output-dir " , PCHPath . nativePathString ( escaped: true ) ,
557
564
FooInstallPath . appending ( component: " Foo.swiftmodule " ) . nativePathString ( escaped: true ) ]
558
565
+ sdkArgumentsForTesting,
559
- env: ProcessEnv . vars)
566
+ env: ProcessEnv . vars,
567
+ interModuleDependencyOracle: dependencyOracle)
560
568
561
- let dependencyOracle = InterModuleDependencyOracle ( )
562
569
let scanLibPath = try XCTUnwrap ( fooBuildDriver. toolchain. lookupSwiftScanLib ( ) )
563
570
guard try dependencyOracle
564
571
. verifyOrCreateScannerInstance ( fileSystem: localFileSystem,
@@ -574,7 +581,12 @@ final class CachingBuildTests: XCTestCase {
574
581
try fooBuildDriver. run ( jobs: fooJobs)
575
582
XCTAssertFalse ( fooBuildDriver. diagnosticEngine. hasErrors)
576
583
577
- let cas = try dependencyOracle. createCAS ( pluginPath: nil , onDiskPath: casPath, pluginOptions: [ ] )
584
+ let cas = try dependencyOracle. getOrCreateCAS ( pluginPath: nil , onDiskPath: casPath, pluginOptions: [ ] )
585
+ if let driverCAS = fooBuildDriver. cas {
586
+ XCTAssertEqual ( cas, driverCAS, " CAS should only be created once " )
587
+ } else {
588
+ XCTFail ( " Cached compilation doesn't have a CAS " )
589
+ }
578
590
try checkCASForResults ( jobs: fooJobs, cas: cas, fs: fooBuildDriver. fileSystem)
579
591
580
592
var driver = try Driver ( args: [ " swiftc " ,
@@ -585,7 +597,8 @@ final class CachingBuildTests: XCTestCase {
585
597
" -cache-compile-job " , " -cas-path " , casPath. nativePathString ( escaped: true ) ,
586
598
" -working-directory " , path. nativePathString ( escaped: true ) ,
587
599
main. nativePathString ( escaped: true ) ] + sdkArgumentsForTesting,
588
- env: ProcessEnv . vars)
600
+ env: ProcessEnv . vars,
601
+ interModuleDependencyOracle: dependencyOracle)
589
602
// This is currently not supported.
590
603
XCTAssertThrowsError ( try driver. planBuild ( ) ) {
591
604
XCTAssertEqual ( $0 as? Driver . Error , . unsupportedConfigurationForCaching( " module Foo has prebuilt header dependency " ) )
@@ -623,8 +636,8 @@ final class CachingBuildTests: XCTestCase {
623
636
" -Xcc " , " -ivfsoverlay " , " -Xcc " , vfsoverlay. nativePathString ( escaped: true ) ,
624
637
" -disable-clang-target " ,
625
638
main. nativePathString ( escaped: true ) ] + sdkArgumentsForTesting,
626
- env: ProcessEnv . vars)
627
- let dependencyOracle = InterModuleDependencyOracle ( )
639
+ env: ProcessEnv . vars,
640
+ interModuleDependencyOracle : dependencyOracle )
628
641
let scanLibPath = try XCTUnwrap ( driver. toolchain. lookupSwiftScanLib ( ) )
629
642
guard try dependencyOracle
630
643
. verifyOrCreateScannerInstance ( fileSystem: localFileSystem,
@@ -760,11 +773,11 @@ final class CachingBuildTests: XCTestCase {
760
773
" -scanner-prefix-map " , testInputsPath. description + " =/^src " ,
761
774
" -scanner-prefix-map " , path. description + " =/^tmp " ,
762
775
main. nativePathString ( escaped: true ) ] + sdkArgumentsForTesting,
763
- env: ProcessEnv . vars)
776
+ env: ProcessEnv . vars,
777
+ interModuleDependencyOracle: dependencyOracle)
764
778
guard driver. isFrontendArgSupported ( . scannerPrefixMap) else {
765
779
throw XCTSkip ( " frontend doesn't support prefix map " )
766
780
}
767
- let dependencyOracle = InterModuleDependencyOracle ( )
768
781
let scanLibPath = try XCTUnwrap ( driver. toolchain. lookupSwiftScanLib ( ) )
769
782
guard try dependencyOracle
770
783
. verifyOrCreateScannerInstance ( fileSystem: localFileSystem,
@@ -830,12 +843,12 @@ final class CachingBuildTests: XCTestCase {
830
843
" -output-file-map " , ofm. nativePathString ( escaped: true ) ,
831
844
" -working-directory " , path. nativePathString ( escaped: true ) ,
832
845
main. nativePathString ( escaped: true ) ] + sdkArgumentsForTesting,
833
- env: ProcessEnv . vars)
846
+ env: ProcessEnv . vars,
847
+ interModuleDependencyOracle: dependencyOracle)
834
848
let jobs = try driver. planBuild ( )
835
849
try driver. run ( jobs: jobs)
836
850
XCTAssertFalse ( driver. diagnosticEngine. hasErrors)
837
851
838
- let dependencyOracle = InterModuleDependencyOracle ( )
839
852
let scanLibPath = try XCTUnwrap ( driver. toolchain. lookupSwiftScanLib ( ) )
840
853
guard try dependencyOracle
841
854
. verifyOrCreateScannerInstance ( fileSystem: localFileSystem,
@@ -844,7 +857,12 @@ final class CachingBuildTests: XCTestCase {
844
857
return
845
858
}
846
859
847
- let cas = try dependencyOracle. createCAS ( pluginPath: nil , onDiskPath: casPath, pluginOptions: [ ] )
860
+ let cas = try dependencyOracle. getOrCreateCAS ( pluginPath: nil , onDiskPath: casPath, pluginOptions: [ ] )
861
+ if let driverCAS = driver. cas {
862
+ XCTAssertEqual ( cas, driverCAS, " CAS should only be created once " )
863
+ } else {
864
+ XCTFail ( " Cached compilation doesn't have a CAS " )
865
+ }
848
866
try checkCASForResults ( jobs: jobs, cas: cas, fs: driver. fileSystem)
849
867
850
868
// try replan the job and make sure some key command-line options are generated.
0 commit comments