@@ -61,17 +61,24 @@ class TestFileHandle : XCTestCase {
61
61
emperor of Blefuscu, and sue for peace
62
62
""" . data ( using: . utf8) !
63
63
} ( )
64
-
65
- func createFileHandle ( ) -> FileHandle {
64
+
65
+ func createTemporaryFile ( containing data : Data = Data ( ) ) -> URL {
66
66
let url = URL ( fileURLWithPath: NSTemporaryDirectory ( ) ) . appendingPathComponent ( ProcessInfo . processInfo. globallyUniqueString)
67
-
68
- expectDoesNotThrow ( { try content. write ( to: url) } , " Couldn't write file at \( url. path) for testing " )
69
-
67
+
68
+ allTemporaryFileURLs. append ( url)
69
+
70
+ expectDoesNotThrow ( { try data. write ( to: url) } , " Couldn't create file at \( url. path) for testing " )
71
+
72
+ return url
73
+ }
74
+
75
+ func createFileHandle( ) -> FileHandle {
76
+ let url = createTemporaryFile ( containing: content)
77
+
70
78
var fh : FileHandle ?
71
79
expectDoesNotThrow ( { fh = try FileHandle ( forReadingFrom: url) } , " Couldn't create file handle. " )
72
-
80
+
73
81
allHandles. append ( fh!)
74
- allTemporaryFileURLs. append ( url)
75
82
return fh!
76
83
}
77
84
@@ -227,22 +234,22 @@ class TestFileHandle : XCTestCase {
227
234
}
228
235
#endif
229
236
230
- func createPipe( ) -> Pipe {
231
- let pipe = Pipe ( )
232
- allHandles. append ( pipe. fileHandleForWriting)
233
- allHandles. append ( pipe. fileHandleForReading)
234
- return pipe
235
- }
236
-
237
237
func performWriteTest< T: DataProtocol > ( with data: T , expecting expectation: Data ? = nil ) {
238
- let pipe = createPipe ( )
239
- let writer = pipe. fileHandleForWriting
240
- let reader = pipe. fileHandleForReading
241
-
242
- expectDoesNotThrow ( { try writer. write ( contentsOf: data) } , " Writing must succeed " )
243
- expectDoesNotThrow ( {
244
- expectEqual ( try reader. read ( upToCount: data. count) , expectation ?? content, " The content must be the same " )
245
- } , " Reading must succeed " )
238
+ let url = createTemporaryFile ( )
239
+
240
+ var maybeFH : FileHandle ?
241
+ expectDoesNotThrow ( { maybeFH = try FileHandle ( forWritingTo: url) } , " Opening write handle must succeed " )
242
+ guard let fh = maybeFH else { return }
243
+ allHandles. append ( fh)
244
+
245
+ expectDoesNotThrow ( { try fh. write ( contentsOf: data) } , " Writing must succeed " )
246
+
247
+ expectDoesNotThrow ( { try fh. close ( ) } , " Closing write handle must succeed " )
248
+
249
+ var readData : Data ?
250
+ expectDoesNotThrow ( { readData = try Data ( contentsOf: url) } , " Must be able to read data " )
251
+
252
+ expectEqual ( readData, expectation ?? content, " The content must be the same " )
246
253
}
247
254
248
255
func testWritingWithData( ) {
0 commit comments