Chromium Code Reviews| Index: tools/gn/filesystem_utils_unittest.cc |
| diff --git a/tools/gn/filesystem_utils_unittest.cc b/tools/gn/filesystem_utils_unittest.cc |
| index 9f89512cfa29f1260d20488e9a67a6feaed4e448..6c3ebe22a213b5923c5dc371dfed15bb76d3e67e 100644 |
| --- a/tools/gn/filesystem_utils_unittest.cc |
| +++ b/tools/gn/filesystem_utils_unittest.cc |
| @@ -204,7 +204,7 @@ TEST(FilesystemUtils, NormalizePath) { |
| NormalizePath(&input); |
| EXPECT_EQ("../bar", input); |
| - input = "/../foo"; // Don't go aboe the root dir. |
| + input = "/../foo"; // Don't go above the root dir. |
| NormalizePath(&input); |
| EXPECT_EQ("/foo", input); |
| @@ -241,6 +241,53 @@ TEST(FilesystemUtils, NormalizePath) { |
| input = "//foo/bar/"; |
| NormalizePath(&input); |
| EXPECT_EQ("//foo/bar/", input); |
| + |
| + // Go above and outside of the source root. |
| + input = "//../foo"; |
| + NormalizePath(&input, "/source/root"); |
| + EXPECT_EQ("/source/foo", input); |
| + |
| + input = "//../foo"; |
| + NormalizePath(&input, "/source/root/"); |
| + EXPECT_EQ("/source/foo", input); |
| + |
| + input = "//../"; |
| + NormalizePath(&input, "/source/root/"); |
| + EXPECT_EQ("/source/", input); |
| + |
| + input = "//../foo.txt"; |
| + NormalizePath(&input, "/source/root"); |
| + EXPECT_EQ("/source/foo.txt", input); |
| + |
| + input = "//../foo/bar/"; |
| + NormalizePath(&input, "/source/root"); |
| + EXPECT_EQ("/source/foo/bar/", input); |
| + |
| + // Go above and back into the source root. This should return a system- |
| + // absolute path. We could arguably return this as a source-absolute path, |
| + // but that would require additional handling to account for a rare edge |
| + // case. |
| + input = "//../root/foo"; |
| + NormalizePath(&input, "/source/root"); |
| + EXPECT_EQ("/source/root/foo", input); |
| + |
| + input = "//../root/foo/bar/"; |
| + NormalizePath(&input, "/source/root"); |
| + EXPECT_EQ("/source/root/foo/bar/", input); |
| + |
| + // Stay inside the source root |
| + input = "//foo/bar"; |
| + NormalizePath(&input, "/source/root"); |
| + EXPECT_EQ("//foo/bar", input); |
| + |
| + input = "//foo/bar/"; |
| + NormalizePath(&input, "/source/root"); |
| + EXPECT_EQ("//foo/bar/", input); |
| + |
| + // The path should not go above the system root. |
| + input = "//../../../../../foo/bar"; |
| + NormalizePath(&input, "/source/root"); |
| + EXPECT_EQ("/foo/bar", input); |
| } |
|
brettw
2015/12/01 01:21:22
Can you add a test to SourceDir that checks this i
slan
2015/12/01 22:15:03
Done.
|
| TEST(FilesystemUtils, RebasePath) { |