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)")
+        }
+    }
 }