summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/unittests/cpp11-migrate/UniqueHeaderNameTest.cpp
diff options
context:
space:
mode:
authorTareq A. Siraj <tareq.a.sriaj@intel.com>2013-07-10 16:09:36 +0000
committerTareq A. Siraj <tareq.a.sriaj@intel.com>2013-07-10 16:09:36 +0000
commit9c7750eeaec7e3e9e2cf4e0be6be399f1b64ead9 (patch)
tree7a3e72fe86376ef5d2dc58d020168387ff90584a /clang-tools-extra/unittests/cpp11-migrate/UniqueHeaderNameTest.cpp
parentaafb84be9e0cb8700e155c76459047bd97255a6a (diff)
downloadbcm5719-llvm-9c7750eeaec7e3e9e2cf4e0be6be399f1b64ead9.tar.gz
bcm5719-llvm-9c7750eeaec7e3e9e2cf4e0be6be399f1b64ead9.zip
Generate a unique filename for a given header
This patch is in preparation for writing the header replacement to disk. Added getUniqueHeaderName() that generates a unique header filename in the same directory as the header file. Differential Revision: http://llvm-reviews.chandlerc.com/D1104 llvm-svn: 186007
Diffstat (limited to 'clang-tools-extra/unittests/cpp11-migrate/UniqueHeaderNameTest.cpp')
-rw-r--r--clang-tools-extra/unittests/cpp11-migrate/UniqueHeaderNameTest.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/clang-tools-extra/unittests/cpp11-migrate/UniqueHeaderNameTest.cpp b/clang-tools-extra/unittests/cpp11-migrate/UniqueHeaderNameTest.cpp
new file mode 100644
index 00000000000..4f75ec85501
--- /dev/null
+++ b/clang-tools-extra/unittests/cpp11-migrate/UniqueHeaderNameTest.cpp
@@ -0,0 +1,61 @@
+//===- unittests/cpp11-migrate/UniqueHeaderNameTest.cpp -------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// Test for the generateReplacementsFileName() in FileOverrides.h
+//
+//===----------------------------------------------------------------------===//
+
+#include "gtest/gtest.h"
+#include "Core/FileOverrides.h"
+#include "llvm/Support/FileSystem.h"
+#include "llvm/Support/Path.h"
+#include "llvm/Support/Regex.h"
+#include "llvm/Support/system_error.h"
+
+TEST(UniqueHeaderName, testUniqueHeaderName) {
+ using namespace llvm::sys::path;
+
+ llvm::SmallString<32> TmpDir;
+ system_temp_directory(true, TmpDir);
+
+ llvm::SmallString<128> SourceFile(TmpDir);
+ append(SourceFile, "project/lib/feature.cpp");
+ native(SourceFile.c_str(), SourceFile);
+
+ llvm::SmallString<128> HeaderFile(TmpDir);
+ append(HeaderFile, "project/include/feature.h");
+ native(HeaderFile.c_str(), HeaderFile);
+
+ llvm::SmallString<128> ExpectedName("^feature.cpp_feature.h_[0-9a-f]{2}_[0-9a-f]{2}_[0-9a-f]{2}_[0-9a-f]{2}_[0-9a-f]{2}_[0-9a-f]{2}.yaml$");
+
+ llvm::SmallString<128> ActualName;
+ llvm::SmallString<128> Error;
+ bool Result =
+ generateReplacementsFileName(SourceFile, HeaderFile, ActualName, Error);
+
+ ASSERT_TRUE(Result);
+ EXPECT_TRUE(Error.empty());
+
+ // We need to check the directory name and filename separately since on
+ // Windows, the path separator is '\' which is a regex escape character.
+ llvm::SmallString<128> ExpectedHeaderPath =
+ llvm::sys::path::parent_path(HeaderFile);
+ llvm::SmallString<128> ActualHeaderPath =
+ llvm::sys::path::parent_path(ActualName);
+ llvm::SmallString<128> ActualHeaderName =
+ llvm::sys::path::filename(ActualName);
+
+ EXPECT_STREQ(ExpectedHeaderPath.c_str(), ActualHeaderPath.c_str());
+
+ llvm::Regex R(ExpectedName);
+ ASSERT_TRUE(R.match(ActualHeaderName))
+ << "ExpectedName: " << ExpectedName.c_str()
+ << "\nActualName: " << ActualName.c_str();
+ ASSERT_TRUE(Error.empty()) << "Error: " << Error.c_str();
+}
OpenPOWER on IntegriCloud