diff options
Diffstat (limited to 'src/util_test.cc')
-rw-r--r-- | src/util_test.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/util_test.cc b/src/util_test.cc index f7ccf00..23d4b83 100644 --- a/src/util_test.cc +++ b/src/util_test.cc @@ -58,6 +58,14 @@ TEST(CanonicalizePath, PathSamples) { path = "foo/./."; EXPECT_TRUE(CanonicalizePath(&path, &err)); EXPECT_EQ("foo", path); + + path = "foo/bar/.."; + EXPECT_TRUE(CanonicalizePath(&path, &err)); + EXPECT_EQ("foo", path); + + path = "foo/.hidden_bar"; + EXPECT_TRUE(CanonicalizePath(&path, &err)); + EXPECT_EQ("foo/.hidden_bar", path); } TEST(CanonicalizePath, EmptyResult) { @@ -94,6 +102,24 @@ TEST(CanonicalizePath, AbsolutePath) { EXPECT_EQ("/usr/include/stdio.h", path); } +TEST(CanonicalizePath, NotNullTerminated) { + string path; + string err; + int len; + + path = "foo/. bar/."; + len = strlen("foo/."); // Canonicalize only the part before the space. + EXPECT_TRUE(CanonicalizePath(&path[0], &len, &err)); + EXPECT_EQ(strlen("foo"), static_cast<size_t>(len)); + EXPECT_EQ("foo/. bar/.", string(path)); + + path = "foo/../file bar/."; + len = strlen("foo/../file"); + EXPECT_TRUE(CanonicalizePath(&path[0], &len, &err)); + EXPECT_EQ(strlen("file"), static_cast<size_t>(len)); + EXPECT_EQ("file ./file bar/.", string(path)); +} + TEST(StripAnsiEscapeCodes, EscapeAtEnd) { string stripped = StripAnsiEscapeCodes("foo\33"); EXPECT_EQ("foo", stripped); |