forked from OSchip/llvm-project
Fix llvm::sys::path::remove_dots() to return "." instead of an empty path.
Differential Revision: https://reviews.llvm.org/D46887 llvm-svn: 332508
This commit is contained in:
parent
d63396097d
commit
b24957e22a
|
@ -726,6 +726,10 @@ static SmallString<256> remove_dots(StringRef path, bool remove_dot_dot,
|
|||
SmallString<256> buffer = path::root_path(path, style);
|
||||
for (StringRef C : components)
|
||||
path::append(buffer, style, C);
|
||||
// If the buffer is empty, then return ".". Many other path utilities
|
||||
// do this so it seems to be an expected result.
|
||||
if (buffer.empty())
|
||||
buffer.append(1, '.');
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
|
|
@ -1146,7 +1146,7 @@ static std::string remove_dots(StringRef path, bool remove_dot_dot,
|
|||
TEST(Support, RemoveDots) {
|
||||
EXPECT_EQ("foolz\\wat",
|
||||
remove_dots(".\\.\\\\foolz\\wat", false, path::Style::windows));
|
||||
EXPECT_EQ("", remove_dots(".\\\\\\\\\\", false, path::Style::windows));
|
||||
EXPECT_EQ(".", remove_dots(".\\\\\\\\\\", false, path::Style::windows));
|
||||
|
||||
EXPECT_EQ("a\\..\\b\\c",
|
||||
remove_dots(".\\a\\..\\b\\c", false, path::Style::windows));
|
||||
|
@ -1163,7 +1163,8 @@ TEST(Support, RemoveDots) {
|
|||
|
||||
EXPECT_EQ("foolz/wat",
|
||||
remove_dots("././/foolz/wat", false, path::Style::posix));
|
||||
EXPECT_EQ("", remove_dots("./////", false, path::Style::posix));
|
||||
EXPECT_EQ(".", remove_dots("./////", false, path::Style::posix));
|
||||
EXPECT_EQ(".", remove_dots("", false, path::Style::posix));
|
||||
|
||||
EXPECT_EQ("a/../b/c", remove_dots("./a/../b/c", false, path::Style::posix));
|
||||
EXPECT_EQ("b/c", remove_dots("./a/../b/c", true, path::Style::posix));
|
||||
|
|
Loading…
Reference in New Issue