Switches the RewriterTestContext away from PathV1.

Now the ToolingTests all work on Windows, and they also clean up their temporary directory if they don't crash.

llvm-svn: 158112
This commit is contained in:
Manuel Klimek 2012-06-06 21:28:13 +00:00
parent 91c25eadea
commit 0a8b9cd1e7
1 changed files with 14 additions and 7 deletions

View 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(),
@ -108,7 +115,7 @@ class RewriterTestContext {
Rewriter Rewrite;
// Will be set once on disk files are generated.
llvm::sys::Path TemporaryDirectory;
SmallString<128> TemporaryDirectory;
};
} // end namespace clang