diff options
author | Nico Weber <thakis@chromium.org> | 2012-05-03 23:13:40 (GMT) |
---|---|---|
committer | Nico Weber <thakis@chromium.org> | 2012-05-04 01:12:21 (GMT) |
commit | 8be4ffbaac5e88bf4da8e537ffdbecccbb916170 (patch) | |
tree | e49eebaa873602e046272b9209f1a8d7d83b492b /src/util_test.cc | |
parent | 3253f66fd14fce3278f71b29a22d61bf1b4aa9f5 (diff) | |
download | Ninja-8be4ffbaac5e88bf4da8e537ffdbecccbb916170.zip Ninja-8be4ffbaac5e88bf4da8e537ffdbecccbb916170.tar.gz Ninja-8be4ffbaac5e88bf4da8e537ffdbecccbb916170.tar.bz2 |
Speed up CanonicalizePath() 6.8% (322ms -> 300ms for chrome empty build).
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); |