Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: tools/gn/filesystem_utils_unittest.cc

Issue 165823003: GN: Change gen command syntax, support relative dirs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Change in build file writing Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/gn/filesystem_utils_unittest.cc
diff --git a/tools/gn/filesystem_utils_unittest.cc b/tools/gn/filesystem_utils_unittest.cc
index f62f4820c671d29d30ca6da96d9691ba6b89bb23..69ae67c2878f9c202a1fa27d49d9efb5293901e2 100644
--- a/tools/gn/filesystem_utils_unittest.cc
+++ b/tools/gn/filesystem_utils_unittest.cc
@@ -254,6 +254,55 @@ TEST(FilesystemUtils, DirectoryWithNoLastSlash) {
EXPECT_EQ("/bar", DirectoryWithNoLastSlash(SourceDir("/bar/")));
}
+TEST(FilesystemUtils, SourceDirForPath) {
+#if defined(OS_WIN)
+ base::FilePath root(L"C:\\source\\foo\\");
+ EXPECT_EQ("/C:/foo/bar/", SourceDirForPath(root,
+ base::FilePath(L"C:\\foo\\bar")).value());
+ EXPECT_EQ("/", SourceDirForPath(root,
+ base::FilePath(L"/")).value());
+ EXPECT_EQ("//", SourceDirForPath(root,
+ base::FilePath(L"C:\\source\\foo")).value());
+ EXPECT_EQ("//bar/", SourceDirForPath(root,
+ base::FilePath(L"C:\\source\\foo\\bar\\")). value());
+ EXPECT_EQ("//bar/baz/", SourceDirForPath(root,
+ base::FilePath(L"C:\\source\\foo\\bar\\baz")).value());
+
+ // Should be case-and-slash-insensitive.
+ EXPECT_EQ("//baR/", SourceDirForPath(root,
+ base::FilePath(L"c:/SOURCE\\Foo/baR/")).value());
+
+ // Some "weird" Windows paths.
+ EXPECT_EQ("/foo/bar/", SourceDirForPath(root,
+ base::FilePath(L"/foo/bar/")).value());
+ EXPECT_EQ("/C:/foo/bar/", SourceDirForPath(root,
+ base::FilePath(L"C:foo/bar/")).value());
+
+ // Also allow absolute GN-style Windows paths.
+ EXPECT_EQ("/C:/foo/bar/", SourceDirForPath(root,
+ base::FilePath(L"/C:/foo/bar")).value());
+ EXPECT_EQ("//bar/", SourceDirForPath(root,
+ base::FilePath(L"/C:/source/foo/bar")).value());
+
+#else
+ base::FilePath root("/source/foo/");
+ EXPECT_EQ("/foo/bar/", SourceDirForPath(root,
+ base::FilePath("/foo/bar/")).value());
+ EXPECT_EQ("/", SourceDirForPath(root,
+ base::FilePath("/")).value());
+ EXPECT_EQ("//", SourceDirForPath(root,
+ base::FilePath("/source/foo")).value());
+ EXPECT_EQ("//bar/", SourceDirForPath(root,
+ base::FilePath("/source/foo/bar/")).value());
+ EXPECT_EQ("//bar/baz/", SourceDirForPath(root,
+ base::FilePath("/source/foo/bar/baz/")).value());
+
+ // Should be case-sensitive.
+ EXPECT_EQ("/SOURCE/foo/bar/", SourceDirForPath(root,
+ base::FilePath("/SOURCE/foo/bar/")).value());
+#endif
+}
+
TEST(FilesystemUtils, GetToolchainDirs) {
BuildSettings build_settings;
build_settings.SetBuildDir(SourceDir("//out/Debug/"));

Powered by Google App Engine
This is Rietveld 408576698