Merge pull request #1234 from dplanitzer/file_manager_tmp_dir_impl
diff --git a/Foundation/FileManager.swift b/Foundation/FileManager.swift
index 0f8e634..e5e2673 100644
--- a/Foundation/FileManager.swift
+++ b/Foundation/FileManager.swift
@@ -719,7 +719,11 @@
open var homeDirectoryForCurrentUser: URL {
return homeDirectory(forUser: CFCopyUserName().takeRetainedValue()._swiftObject)!
}
- open var temporaryDirectory: URL { NSUnimplemented() }
+
+ open var temporaryDirectory: URL {
+ return URL(fileURLWithPath: NSTemporaryDirectory())
+ }
+
open func homeDirectory(forUser userName: String) -> URL? {
guard !userName.isEmpty else { return nil }
guard let url = CFCopyHomeDirectoryURLForUser(userName._cfObject) else { return nil }
diff --git a/TestFoundation/TestFileManager.swift b/TestFoundation/TestFileManager.swift
index 9cc1e3e..90d1597 100644
--- a/TestFoundation/TestFileManager.swift
+++ b/TestFoundation/TestFileManager.swift
@@ -31,6 +31,7 @@
("test_subpathsOfDirectoryAtPath", test_subpathsOfDirectoryAtPath),
("test_copyItemAtPathToPath", test_copyItemAtPathToPath),
("test_homedirectoryForUser", test_homedirectoryForUser),
+ ("test_temporaryDirectoryForUser", test_temporaryDirectoryForUser),
]
}
@@ -525,4 +526,25 @@
XCTAssertNil(filemanger.homeDirectory(forUser: ""))
XCTAssertNotNil(filemanger.homeDirectoryForCurrentUser)
}
+
+ func test_temporaryDirectoryForUser() {
+ let filemanger = FileManager.default
+ let tmpDir = filemanger.temporaryDirectory
+ XCTAssertNotNil(tmpDir)
+ let tmpFileUrl = tmpDir.appendingPathComponent("test.bin")
+ let tmpFilePath = tmpFileUrl.path
+
+ do {
+ if filemanger.fileExists(atPath: tmpFilePath) {
+ try filemanger.removeItem(at: tmpFileUrl)
+ }
+
+ try "hello world".write(to: tmpFileUrl, atomically: false, encoding: .utf8)
+ XCTAssert(filemanger.fileExists(atPath: tmpFilePath))
+
+ try filemanger.removeItem(at: tmpFileUrl)
+ } catch {
+ XCTFail("Unable to write a file to the temporary directory: \(tmpDir), err: \(error)")
+ }
+ }
}