aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/Path.cpp
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2014-03-11 22:05:42 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2014-03-11 22:05:42 +0000
commitafc50b3ed4b97d9060d9d56fde840217875492a6 (patch)
tree583481e05c6329f8e54aef7772cbbba3ca77b200 /llvm/unittests/Support/Path.cpp
parent3b83496dd40aab5c18461dc2f2c986f012fb98db (diff)
downloadllvm-afc50b3ed4b97d9060d9d56fde840217875492a6.zip
llvm-afc50b3ed4b97d9060d9d56fde840217875492a6.tar.gz
llvm-afc50b3ed4b97d9060d9d56fde840217875492a6.tar.bz2
support: add a utility function to normalise path separators
Add a utility function to convert the Windows path separator to Unix style path separators. This is used by a subsequent change in clang to enable the use of Windows SDK headers on Linux. llvm-svn: 203611
Diffstat (limited to 'llvm/unittests/Support/Path.cpp')
-rw-r--r--llvm/unittests/Support/Path.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/llvm/unittests/Support/Path.cpp b/llvm/unittests/Support/Path.cpp
index 91e421d..b79d055 100644
--- a/llvm/unittests/Support/Path.cpp
+++ b/llvm/unittests/Support/Path.cpp
@@ -620,4 +620,41 @@ TEST_F(FileSystemTest, FileMapping) {
fs::mapped_file_region mfrrv(std::move(m));
EXPECT_EQ(mfrrv.const_data(), Data);
}
+
+TEST(Support, NormalizePath) {
+#if defined(LLVM_ON_WIN32)
+#define EXPECT_PATH_IS(path__, windows__, not_windows__) \
+ EXPECT_EQ(path__, windows__);
+#else
+#define EXPECT_PATH_IS(path__, windows__, not_windows__) \
+ EXPECT_EQ(path__, not_windows__);
+#endif
+
+ SmallString<64> Path1("a");
+ SmallString<64> Path2("a/b");
+ SmallString<64> Path3("a\\b");
+ SmallString<64> Path4("a\\\\b");
+ SmallString<64> Path5("\\a");
+ SmallString<64> Path6("a\\");
+
+ ASSERT_NO_ERROR(fs::normalize_separators(Path1));
+ EXPECT_PATH_IS(Path1, "a", "a");
+
+ ASSERT_NO_ERROR(fs::normalize_separators(Path2));
+ EXPECT_PATH_IS(Path2, "a/b", "a/b");
+
+ ASSERT_NO_ERROR(fs::normalize_separators(Path3));
+ EXPECT_PATH_IS(Path3, "a\\b", "a/b");
+
+ ASSERT_NO_ERROR(fs::normalize_separators(Path4));
+ EXPECT_PATH_IS(Path4, "a\\\\b", "a\\\\b");
+
+ ASSERT_NO_ERROR(fs::normalize_separators(Path5));
+ EXPECT_PATH_IS(Path5, "\\a", "/a");
+
+ ASSERT_NO_ERROR(fs::normalize_separators(Path6));
+ EXPECT_PATH_IS(Path6, "a\\", "a/");
+
+#undef EXPECT_PATH_IS
+}
} // anonymous namespace