]> granicus.if.org Git - clang/commitdiff
Switches the RewriterTestContext away from PathV1.
authorManuel Klimek <klimek@google.com>
Wed, 6 Jun 2012 21:28:13 +0000 (21:28 +0000)
committerManuel Klimek <klimek@google.com>
Wed, 6 Jun 2012 21:28:13 +0000 (21:28 +0000)
Now the ToolingTests all work on Windows, and they also clean up their temporary directory if they don't crash.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158112 91177308-0d34-0410-b5e6-96231b3b80d8

unittests/Tooling/RewriterTestContext.h

index 73f9aa662f6a9dcdeb9fefc00b3c2af011df9d05..9d5b4c92e0ca38248f9f2c433a9b71d910a53759 100644 (file)
@@ -21,6 +21,7 @@
 #include "clang/Frontend/DiagnosticOptions.h"
 #include "clang/Frontend/TextDiagnosticPrinter.h"
 #include "clang/Rewrite/Rewriter.h"
+#include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/raw_ostream.h"
 
@@ -43,6 +44,10 @@ class RewriterTestContext {
   }
 
   ~RewriterTestContext() {
+    if (!TemporaryDirectory.empty()) {
+      uint32_t RemovedCount = 0;
+      llvm::sys::fs::remove_all(TemporaryDirectory.str(), RemovedCount);
+    }
   }
 
   FileID createInMemoryFile(StringRef Name, StringRef Content) {
@@ -56,12 +61,14 @@ class RewriterTestContext {
   }
 
   FileID createOnDiskFile(StringRef Name, StringRef Content) {
-    if (!TemporaryDirectory.isValid()) {
-      std::string ErrorInfo;
-      TemporaryDirectory = llvm::sys::Path::GetTemporaryDirectory(&ErrorInfo);
-      assert(ErrorInfo.empty());
+    if (TemporaryDirectory.empty()) {
+      int FD;
+      assert(!llvm::sys::fs::unique_file("rewriter-test-%%-%%-%%-%%/anchor",
+                                         FD, TemporaryDirectory));
+      llvm::raw_fd_ostream Closer(FD, /*shouldClose=*/true);
+      TemporaryDirectory = llvm::sys::path::parent_path(TemporaryDirectory);
     }
-    llvm::SmallString<1024> Path(TemporaryDirectory.str());
+    llvm::SmallString<1024> Path(TemporaryDirectory);
     llvm::sys::path::append(Path, Name);
     std::string ErrorInfo;
     llvm::raw_fd_ostream OutStream(Path.c_str(),
@@ -107,8 +114,8 @@ class RewriterTestContext {
   LangOptions Options;
   Rewriter Rewrite;
 
-  // Will be set once on disk files are generated. 
-  llvm::sys::Path TemporaryDirectory;
+  // Will be set once on disk files are generated.
+  SmallString<128> TemporaryDirectory;
 };
 
 } // end namespace clang