summaryrefslogtreecommitdiffstats
path: root/base/file_path_unittest.cc
diff options
context:
space:
mode:
authortim@chromium.org <tim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-27 02:17:53 +0000
committertim@chromium.org <tim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-27 02:17:53 +0000
commit71b0c7f62e9c674adb0ffc785ee0e8de05b55468 (patch)
treeee375dfcf70ac3957a999c5b05b21f90b395c8a6 /base/file_path_unittest.cc
parentbd6bf836e379f88b7634c897d210355fbd4e67cb (diff)
downloadchromium_src-71b0c7f62e9c674adb0ffc785ee0e8de05b55468.zip
chromium_src-71b0c7f62e9c674adb0ffc785ee0e8de05b55468.tar.gz
chromium_src-71b0c7f62e9c674adb0ffc785ee0e8de05b55468.tar.bz2
Revert 30149 - The existing file_util::AbsolutePath() function was already doing what we needed to do in the ExtensionResource class.
BUG= http://crbug.com/25681 & http://crbug.com/25131 Review URL: http://codereview.chromium.org/334028 TBR=mad@chromium.org Review URL: http://codereview.chromium.org/335042 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30152 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/file_path_unittest.cc')
-rw-r--r--base/file_path_unittest.cc92
1 files changed, 92 insertions, 0 deletions
diff --git a/base/file_path_unittest.cc b/base/file_path_unittest.cc
index 7d8e386..9d45170 100644
--- a/base/file_path_unittest.cc
+++ b/base/file_path_unittest.cc
@@ -497,6 +497,98 @@ TEST_F(FilePathTest, PathComponentsTest) {
}
}
+TEST_F(FilePathTest, AppendAndResolveRelativeTest) {
+ const struct BinaryTestData cases[] = {
+#if defined(FILE_PATH_USES_DRIVE_LETTERS)
+ { { FPL("c:/"), FPL("foo") }, FPL("c:/foo") },
+ { { FPL("f:/foo/bar"), FPL("..") }, FPL("f:/foo") },
+ { { FPL("f:/foo.bar"), FPL("..") }, FPL("f:/") },
+ { { FPL("F:/foo/.."), FPL("./bar/.") }, FPL("F:/bar") },
+ { { FPL("E:/Foo/bar"), FPL("../..") }, FPL("E:/") },
+ { { FPL("E:/Foo/bar/."), FPL("../..") }, FPL("E:/") },
+ { { FPL("e:/foo/.."), FPL("bar/..") }, FPL("e:/") },
+ { { FPL("c:/foo/./bar/.."), FPL("../baz") }, FPL("c:/baz") },
+ { { FPL("E:/./foo/bar/.."), FPL("../baz/..") }, FPL("E:/") },
+ { { FPL("x:/foo/../bar/.."), FPL("baz/../boo") }, FPL("x:/boo") },
+ { { FPL("E:/foo.bar/.."), FPL("../baz/..") }, FPL("") },
+ { { FPL("Z:/foo"), FPL("../..") }, FPL("") },
+ { { FPL("y:/"), FPL("..") }, FPL("") },
+ { { FPL("B:/.."), FPL("bar/.") }, FPL("") },
+ { { FPL("a:/foo/.."), FPL("..") }, FPL("") },
+ { { FPL("r:/.."), FPL("..") }, FPL("") },
+ { { FPL("F:/foo/.."), FPL("../..") }, FPL("") },
+ { { FPL("O:/foo/bar/.."), FPL("../..") }, FPL("") },
+#endif // FILE_PATH_USES_DRIVE_LETTERS
+#if defined(FILE_PATH_USES_WIN_SEPARATORS)
+ { { FPL("\\\\"), FPL("foo") }, FPL("\\\\foo") },
+ { { FPL("\\\\foo"), FPL("bar") }, FPL("\\\\foo\\bar") },
+ { { FPL("\\\\foo\\bar"), FPL("..") }, FPL("\\\\foo") },
+ { { FPL("\\\\foo.bar"), FPL("..") }, FPL("\\\\") },
+ { { FPL("\\\\Foo\\bar"), FPL("..\\..") }, FPL("\\\\") },
+ { { FPL("\\\\Foo\\bar\\."), FPL("..\\..") }, FPL("\\\\") },
+ { { FPL("\\\\foo\\bar"), FPL("foo\\..\\baz") }, FPL("\\\\foo\\bar\\baz") },
+ { { FPL("\\\\foo\\.\\bar"), FPL("..\\baz\\.") }, FPL("\\\\foo\\baz") },
+ { { FPL("\\\\.\\foo\\.."), FPL("bar") }, FPL("\\\\bar") },
+ { { FPL("\\\\foo\\.."), FPL(".\\bar\\..") }, FPL("\\\\") },
+ { { FPL("\\\\foo\\bar\\.."), FPL("..\\baz") }, FPL("\\\\baz") },
+ { { FPL("\\\\foo\\bar\\.."), FPL("..\\baz\\..") }, FPL("\\\\") },
+ { { FPL("\\\\foo\\..\\bar\\.."), FPL("baz\\..\\boo") }, FPL("\\\\boo"), },
+ { { FPL("\\\\foo.bar\\.."), FPL("..\\baz\\..") }, FPL("") },
+ { { FPL("\\\\foo"), FPL("..\\..") }, FPL("") },
+ { { FPL("\\\\"), FPL("..") }, FPL("") },
+ { { FPL("\\\\.."), FPL("bar\\.") }, FPL("") },
+ { { FPL("\\\\foo\\.."), FPL("..") }, FPL("") },
+ { { FPL("\\\\.."), FPL("..") }, FPL("") },
+ { { FPL("\\\\foo\\.."), FPL("..\\..") }, FPL("") },
+ { { FPL("\\\\foo\\bar\\.."), FPL("..\\..") }, FPL("") },
+#if defined(FILE_PATH_USES_DRIVE_LETTERS)
+ { { FPL("E:/foo"), FPL("bar") }, FPL("E:/foo\\bar") },
+ { { FPL("C:/foo/bar"), FPL("foo/../baz") }, FPL("C:/foo\\bar\\baz") },
+ { { FPL("e:/foo/bar"), FPL("../baz") }, FPL("e:/foo\\baz") },
+#endif
+#else // FILE_PATH_USES_WIN_SEPARAORS
+ { { FPL("/"), FPL("foo") }, FPL("/foo") },
+ { { FPL("/foo"), FPL("bar") }, FPL("/foo/bar") },
+ { { FPL("/foo/bar/"), FPL("..") }, FPL("/foo") },
+ { { FPL("/foo.bar"), FPL("..") }, FPL("/") },
+ { { FPL("//foo"), FPL("..") }, FPL("//") },
+ { { FPL("/foo/./bar"), FPL("../..") }, FPL("/") },
+ { { FPL("/foo/bar/."), FPL("foo/../baz") }, FPL("/foo/bar/baz") },
+ { { FPL("/./foo/bar"), FPL("../baz/.") }, FPL("/foo/baz") },
+ { { FPL("/foo/.."), FPL("./bar") }, FPL("/bar") },
+ { { FPL("/foo/.."), FPL("bar/..") }, FPL("/") },
+ { { FPL("//foo/bar/.."), FPL("../baz") }, FPL("//baz") },
+ { { FPL("/foo/bar/.."), FPL("../baz/..") }, FPL("/") },
+ { { FPL("/foo/../bar/.."), FPL("baz/../boo") }, FPL("/boo") },
+ { { FPL("//foo.bar/.."), FPL("../baz") }, FPL("") },
+ { { FPL("/foo"), FPL("../..") }, FPL("") },
+ { { FPL("//"), FPL("..") }, FPL("") },
+ { { FPL("/.."), FPL("./bar") }, FPL("") },
+ { { FPL("/foo/.."), FPL("..") }, FPL("") },
+ { { FPL("/.."), FPL("..") }, FPL("") },
+ { { FPL("/foo/.."), FPL("../..") }, FPL("") },
+ { { FPL("/foo/bar/.."), FPL("../..") }, FPL("") },
+#if defined(FILE_PATH_USES_DRIVE_LETTERS)
+ { { FPL("E:/foo"), FPL("bar") }, FPL("E:/foo/bar") },
+ { { FPL("C:/foo/bar"), FPL("foo/../baz") }, FPL("C:/foo/bar/baz") },
+ { { FPL("e:/foo/bar"), FPL("../baz") }, FPL("e:/foo/baz") },
+#endif
+#endif // FILE_PATH_USES_WIN_SEPARAORS
+ };
+
+ for (size_t i = 0; i < arraysize(cases); ++i) {
+ FilePath parent(cases[i].inputs[0]);
+ FilePath child(cases[i].inputs[1]);
+
+ FilePath result;
+ EXPECT_EQ(cases[i].expected[0] != '\0',
+ parent.AppendAndResolveRelative(child, &result)) <<
+ "i: " << i << ", parent: " << parent.value() << ", child: " <<
+ child.value();
+ EXPECT_STREQ(cases[i].expected, result.value().c_str());
+ }
+}
+
TEST_F(FilePathTest, IsParentTest) {
const struct BinaryBooleanTestData cases[] = {
{ { FPL("/"), FPL("/foo/bar/baz") }, true},