diff options
author | Tareq A. Siraj <tareq.a.sriaj@intel.com> | 2013-07-10 16:09:36 +0000 |
---|---|---|
committer | Tareq A. Siraj <tareq.a.sriaj@intel.com> | 2013-07-10 16:09:36 +0000 |
commit | 9c7750eeaec7e3e9e2cf4e0be6be399f1b64ead9 (patch) | |
tree | 7a3e72fe86376ef5d2dc58d020168387ff90584a /clang-tools-extra/unittests/cpp11-migrate/UniqueHeaderNameTest.cpp | |
parent | aafb84be9e0cb8700e155c76459047bd97255a6a (diff) | |
download | bcm5719-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.cpp | 61 |
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(); +} |