summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2016-02-02 23:20:01 (GMT)
committerNico Weber <nicolasweber@gmx.de>2016-02-02 23:20:01 (GMT)
commitf1f3f494f5f67a4cd64b0cddaad472b070f6db07 (patch)
treeeeb623655e1ac45cb471508dcbf8568a1e26bf81 /src
parent35e950d4c2d97d21ef7adf27cf6d003827e908ed (diff)
parent5b910df397c6937552a6f3dee600da69c49702e2 (diff)
downloadNinja-f1f3f494f5f67a4cd64b0cddaad472b070f6db07.zip
Ninja-f1f3f494f5f67a4cd64b0cddaad472b070f6db07.tar.gz
Ninja-f1f3f494f5f67a4cd64b0cddaad472b070f6db07.tar.bz2
Merge pull request #1076 from colincross/canonicalize
Canonicalize "." to "."
Diffstat (limited to 'src')
-rw-r--r--src/util.cc4
-rw-r--r--src/util_test.cc32
2 files changed, 18 insertions, 18 deletions
diff --git a/src/util.cc b/src/util.cc
index d150fe2..e31fd1f 100644
--- a/src/util.cc
+++ b/src/util.cc
@@ -226,8 +226,8 @@ bool CanonicalizePath(char* path, size_t* len, unsigned int* slash_bits,
}
if (dst == start) {
- *err = "path canonicalizes to the empty path";
- return false;
+ *dst++ = '.';
+ *dst++ = '\0';
}
*len = dst - start - 1;
diff --git a/src/util_test.cc b/src/util_test.cc
index 8ca7f56..33a4107 100644
--- a/src/util_test.cc
+++ b/src/util_test.cc
@@ -91,6 +91,22 @@ TEST(CanonicalizePath, PathSamples) {
path = "/";
EXPECT_TRUE(CanonicalizePath(&path, &err));
EXPECT_EQ("", path);
+
+ path = "/foo/..";
+ EXPECT_TRUE(CanonicalizePath(&path, &err));
+ EXPECT_EQ("", path);
+
+ path = ".";
+ EXPECT_TRUE(CanonicalizePath(&path, &err));
+ EXPECT_EQ(".", path);
+
+ path = "./.";
+ EXPECT_TRUE(CanonicalizePath(&path, &err));
+ EXPECT_EQ(".", path);
+
+ path = "foo/..";
+ EXPECT_TRUE(CanonicalizePath(&path, &err));
+ EXPECT_EQ(".", path);
}
#ifdef _WIN32
@@ -288,22 +304,6 @@ TEST(CanonicalizePath, TooManyComponents) {
}
#endif
-TEST(CanonicalizePath, EmptyResult) {
- string path;
- string err;
-
- EXPECT_FALSE(CanonicalizePath(&path, &err));
- EXPECT_EQ("empty path", err);
-
- path = ".";
- EXPECT_FALSE(CanonicalizePath(&path, &err));
- EXPECT_EQ("path canonicalizes to the empty path", err);
-
- path = "./.";
- EXPECT_FALSE(CanonicalizePath(&path, &err));
- EXPECT_EQ("path canonicalizes to the empty path", err);
-}
-
TEST(CanonicalizePath, UpDir) {
string path, err;
path = "../../foo/bar.h";