@@ -1840,37 +1840,38 @@ final class SwiftDriverTests: XCTestCase {
1840
1840
}
1841
1841
}
1842
1842
1843
- // No response file
1843
+ // Response file query with full command-line API
1844
1844
do {
1845
- var driver = try Driver ( args: [ " swift " ] + [ " foo.swift " ] )
1845
+ let source = try AbsolutePath ( validating: " /foo.swift " )
1846
+ var driver = try Driver ( args: [ " swift " ] + [ source. nativePathString ( escaped: false ) ] )
1846
1847
let jobs = try driver. planBuild ( )
1847
1848
XCTAssertEqual ( jobs. count, 1 )
1848
1849
XCTAssertEqual ( jobs [ 0 ] . kind, . interpret)
1849
1850
let interpretJob = jobs [ 0 ]
1850
1851
let resolver = try ArgsResolver ( fileSystem: localFileSystem)
1851
- let resolvedArgs : [ String ] = try resolver. resolveArgumentList ( for: interpretJob)
1852
- XCTAssertFalse ( resolvedArgs. contains { $0. hasPrefix ( " @ " ) } )
1852
+ let resolved : ResolvedCommandLine = try resolver. resolveArgumentList ( for: interpretJob, useResponseFiles: . forced)
1853
+ guard case . usingResponseFile( resolved: let resolvedArgs, responseFileContents: let contents) = resolved else {
1854
+ XCTFail ( " Argument wasn't a response file " )
1855
+ return
1856
+ }
1857
+ XCTAssertEqual ( resolvedArgs. count, 3 )
1858
+ XCTAssertEqual ( resolvedArgs [ 1 ] , " -frontend " )
1859
+ XCTAssertEqual ( resolvedArgs [ 2 ] . first, " @ " )
1860
+
1861
+ XCTAssertTrue ( contents. contains ( subsequence: [ " -frontend " , " -interpret " ] ) )
1862
+ XCTAssertTrue ( contents. contains ( subsequence: [ " -module-name " , " foo " ] ) )
1853
1863
}
1854
- }
1855
1864
1856
- func testResponseFileDeterministicNaming( ) throws {
1857
- #if !os(macOS)
1858
- try XCTSkipIf ( true , " Test assumes macOS response file quoting behavior " )
1859
- #endif
1865
+ // No response file
1860
1866
do {
1861
- let testJob = Job ( moduleName: " Foo " ,
1862
- kind: . compile,
1863
- tool: . init( path: try AbsolutePath ( validating: " /swiftc " ) , supportsResponseFiles: true ) ,
1864
- commandLine: ( 1 ... 20000 ) . map { . flag( " -DTEST_ \( $0) " ) } ,
1865
- inputs: [ ] ,
1866
- primaryInputs: [ ] ,
1867
- outputs: [ ] )
1867
+ var driver = try Driver ( args: [ " swift " ] + [ " foo.swift " ] )
1868
+ let jobs = try driver. planBuild ( )
1869
+ XCTAssertEqual ( jobs. count, 1 )
1870
+ XCTAssertEqual ( jobs [ 0 ] . kind, . interpret)
1871
+ let interpretJob = jobs [ 0 ]
1868
1872
let resolver = try ArgsResolver ( fileSystem: localFileSystem)
1869
- let resolvedArgs : [ String ] = try resolver. resolveArgumentList ( for: testJob)
1870
- XCTAssertEqual ( resolvedArgs. count, 3 )
1871
- XCTAssertEqual ( resolvedArgs [ 2 ] . first, " @ " )
1872
- let responseFilePath = try AbsolutePath ( validating: String ( resolvedArgs [ 2 ] . dropFirst ( ) ) )
1873
- XCTAssertEqual ( responseFilePath. basename, " arguments-847d15e70d97df7c18033735497ca8dcc4441f461d5a9c2b764b127004524e81.resp " )
1873
+ let resolvedArgs : [ String ] = try resolver. resolveArgumentList ( for: interpretJob)
1874
+ XCTAssertFalse ( resolvedArgs. contains { $0. hasPrefix ( " @ " ) } )
1874
1875
}
1875
1876
}
1876
1877
0 commit comments