summaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
authorSerge Pavlov <sepavloff@gmail.com>2017-03-01 09:38:15 +0000
committerSerge Pavlov <sepavloff@gmail.com>2017-03-01 09:38:15 +0000
commit82d2de36f56323d9e6c40e0ab365333af64f592e (patch)
tree7fc4a922d214c201599702ed2e082aad862681bd /unittests
parentaac0739778225b43c7767e6b0e986dfcd5f51191 (diff)
Process tilde in llvm::sys::path::native
Windows does not treat `~` as a reference to home directory, so the call to `llvm::sys::path::native` on, say, `~/somedir` produces `~\somedir`, which has different meaning than the original path. With this change tilde is expanded on Windows to user profile directory. Such behavior keeps original meaning of the path and is consistent with the algorithm of `llvm::sys::path::home_directory`. Differential Revision: https://reviews.llvm.org/D27527 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@296590 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests')
-rw-r--r--unittests/Support/Path.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/unittests/Support/Path.cpp b/unittests/Support/Path.cpp
index 24f16fd1696..a93f929af78 100644
--- a/unittests/Support/Path.cpp
+++ b/unittests/Support/Path.cpp
@@ -968,6 +968,33 @@ TEST(Support, NormalizePath) {
EXPECT_PATH_IS(Path6, "a\\", "a/");
#undef EXPECT_PATH_IS
+
+#if defined(LLVM_ON_WIN32)
+ SmallString<64> PathHome;
+ path::home_directory(PathHome);
+
+ const char *Path7a = "~/aaa";
+ SmallString<64> Path7(Path7a);
+ path::native(Path7);
+ EXPECT_TRUE(Path7.endswith("\\aaa"));
+ EXPECT_TRUE(Path7.startswith(PathHome));
+ EXPECT_EQ(Path7.size(), PathHome.size() + strlen(Path7a + 1));
+
+ const char *Path8a = "~";
+ SmallString<64> Path8(Path8a);
+ path::native(Path8);
+ EXPECT_EQ(Path8, PathHome);
+
+ const char *Path9a = "~aaa";
+ SmallString<64> Path9(Path9a);
+ path::native(Path9);
+ EXPECT_EQ(Path9, "~aaa");
+
+ const char *Path10a = "aaa/~/b";
+ SmallString<64> Path10(Path10a);
+ path::native(Path10);
+ EXPECT_EQ(Path10, "aaa\\~\\b");
+#endif
}
TEST(Support, RemoveLeadingDotSlash) {