| Index: tools/gn/source_dir_unittest.cc
|
| diff --git a/tools/gn/source_dir_unittest.cc b/tools/gn/source_dir_unittest.cc
|
| index 5034335795bedac83dd94d7eba6cad35e3b76521..04684e6294f4559c90be2907fb235d62cd7d802d 100644
|
| --- a/tools/gn/source_dir_unittest.cc
|
| +++ b/tools/gn/source_dir_unittest.cc
|
| @@ -3,10 +3,13 @@
|
| // found in the LICENSE file.
|
|
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "tools/gn/err.h"
|
| #include "tools/gn/source_dir.h"
|
| #include "tools/gn/source_file.h"
|
| +#include "tools/gn/value.h"
|
|
|
| TEST(SourceDir, ResolveRelativeFile) {
|
| + Err err;
|
| SourceDir base("//base/");
|
| #if defined(OS_WIN)
|
| base::StringPiece source_root("C:/source/root");
|
| @@ -15,48 +18,69 @@ TEST(SourceDir, ResolveRelativeFile) {
|
| #endif
|
|
|
| // Empty input is an error.
|
| - EXPECT_TRUE(base.ResolveRelativeFile("", source_root) == SourceFile());
|
| + EXPECT_TRUE(base.ResolveRelativeFile(
|
| + Value(nullptr, std::string()), &err, source_root) == SourceFile());
|
| + EXPECT_TRUE(err.has_error());
|
|
|
| // These things are directories, so should be an error.
|
| - EXPECT_TRUE(base.ResolveRelativeFile("//foo/bar/", source_root) ==
|
| - SourceFile());
|
| - EXPECT_TRUE(base.ResolveRelativeFile("bar/", source_root) ==
|
| - SourceFile());
|
| + err = Err();
|
| + EXPECT_TRUE(base.ResolveRelativeFile(
|
| + Value(nullptr, "//foo/bar/"), &err, source_root) == SourceFile());
|
| + EXPECT_TRUE(err.has_error());
|
| +
|
| + err = Err();
|
| + EXPECT_TRUE(base.ResolveRelativeFile(
|
| + Value(nullptr, "bar/"), &err, source_root) == SourceFile());
|
| + EXPECT_TRUE(err.has_error());
|
|
|
| // Absolute paths should be passed unchanged.
|
| - EXPECT_TRUE(base.ResolveRelativeFile("//foo",source_root) ==
|
| - SourceFile("//foo"));
|
| - EXPECT_TRUE(base.ResolveRelativeFile("/foo", source_root) ==
|
| - SourceFile("/foo"));
|
| + err = Err();
|
| + EXPECT_TRUE(base.ResolveRelativeFile(
|
| + Value(nullptr, "//foo"), &err, source_root) == SourceFile("//foo"));
|
| + EXPECT_FALSE(err.has_error());
|
| +
|
| + EXPECT_TRUE(base.ResolveRelativeFile(
|
| + Value(nullptr, "/foo"), &err, source_root) == SourceFile("/foo"));
|
| + EXPECT_FALSE(err.has_error());
|
|
|
| // Basic relative stuff.
|
| - EXPECT_TRUE(base.ResolveRelativeFile("foo", source_root) ==
|
| - SourceFile("//base/foo"));
|
| - EXPECT_TRUE(base.ResolveRelativeFile("./foo", source_root) ==
|
| - SourceFile("//base/foo"));
|
| - EXPECT_TRUE(base.ResolveRelativeFile("../foo", source_root) ==
|
| - SourceFile("//foo"));
|
| + EXPECT_TRUE(base.ResolveRelativeFile(
|
| + Value(nullptr, "foo"), &err, source_root) == SourceFile("//base/foo"));
|
| + EXPECT_FALSE(err.has_error());
|
| + EXPECT_TRUE(base.ResolveRelativeFile(
|
| + Value(nullptr, "./foo"), &err, source_root) == SourceFile("//base/foo"));
|
| + EXPECT_FALSE(err.has_error());
|
| + EXPECT_TRUE(base.ResolveRelativeFile(
|
| + Value(nullptr, "../foo"), &err, source_root) == SourceFile("//foo"));
|
| + EXPECT_FALSE(err.has_error());
|
|
|
| // If the given relative path points outside the source root, we
|
| // expect an absolute path.
|
| #if defined(OS_WIN)
|
| - EXPECT_TRUE(base.ResolveRelativeFile("../../foo", source_root) ==
|
| - SourceFile("/C:/source/foo"));
|
| + EXPECT_TRUE(base.ResolveRelativeFile(
|
| + Value(nullptr, "../../foo"), &err, source_root) ==
|
| + SourceFile("/C:/source/foo"));
|
| + EXPECT_FALSE(err.has_error());
|
| #else
|
| - EXPECT_TRUE(base.ResolveRelativeFile("../../foo", source_root) ==
|
| - SourceFile("/source/foo"));
|
| + EXPECT_TRUE(base.ResolveRelativeFile(
|
| + Value(nullptr, "../../foo"), &err, source_root) ==
|
| + SourceFile("/source/foo"));
|
| + EXPECT_FALSE(err.has_error());
|
| #endif
|
|
|
| #if defined(OS_WIN)
|
| // Note that we don't canonicalize the backslashes to forward slashes.
|
| // This could potentially be changed in the future which would mean we should
|
| // just change the expected result.
|
| - EXPECT_TRUE(base.ResolveRelativeFile("C:\\foo\\bar.txt", source_root) ==
|
| - SourceFile("/C:/foo/bar.txt"));
|
| + EXPECT_TRUE(base.ResolveRelativeFile(
|
| + Value(nullptr, "C:\\foo\\bar.txt"), &err, source_root) ==
|
| + SourceFile("/C:/foo/bar.txt"));
|
| + EXPECT_FALSE(err.has_error());
|
| #endif
|
| }
|
|
|
| TEST(SourceDir, ResolveRelativeDir) {
|
| + Err err;
|
| SourceDir base("//base/");
|
| #if defined(OS_WIN)
|
| base::StringPiece source_root("C:/source/root");
|
| @@ -65,36 +89,52 @@ TEST(SourceDir, ResolveRelativeDir) {
|
| #endif
|
|
|
| // Empty input is an error.
|
| - EXPECT_TRUE(base.ResolveRelativeDir("", source_root) == SourceDir());
|
| + EXPECT_TRUE(base.ResolveRelativeDir(
|
| + Value(nullptr, std::string()), &err, source_root) == SourceDir());
|
| + EXPECT_TRUE(err.has_error());
|
|
|
| // Absolute paths should be passed unchanged.
|
| - EXPECT_TRUE(base.ResolveRelativeDir("//foo", source_root) ==
|
| - SourceDir("//foo/"));
|
| - EXPECT_TRUE(base.ResolveRelativeDir("/foo", source_root) ==
|
| - SourceDir("/foo/"));
|
| + err = Err();
|
| + EXPECT_TRUE(base.ResolveRelativeDir(
|
| + Value(nullptr, "//foo"), &err, source_root) == SourceDir("//foo/"));
|
| + EXPECT_FALSE(err.has_error());
|
| + EXPECT_TRUE(base.ResolveRelativeDir(
|
| + Value(nullptr, "/foo"), &err, source_root) == SourceDir("/foo/"));
|
| + EXPECT_FALSE(err.has_error());
|
|
|
| // Basic relative stuff.
|
| - EXPECT_TRUE(base.ResolveRelativeDir("foo", source_root) ==
|
| - SourceDir("//base/foo/"));
|
| - EXPECT_TRUE(base.ResolveRelativeDir("./foo", source_root) ==
|
| - SourceDir("//base/foo/"));
|
| - EXPECT_TRUE(base.ResolveRelativeDir("../foo", source_root) ==
|
| - SourceDir("//foo/"));
|
| + EXPECT_TRUE(base.ResolveRelativeDir(
|
| + Value(nullptr, "foo"), &err, source_root) == SourceDir("//base/foo/"));
|
| + EXPECT_FALSE(err.has_error());
|
| + EXPECT_TRUE(base.ResolveRelativeDir(
|
| + Value(nullptr, "./foo"), &err, source_root) == SourceDir("//base/foo/"));
|
| + EXPECT_FALSE(err.has_error());
|
| + EXPECT_TRUE(base.ResolveRelativeDir(
|
| + Value(nullptr, "../foo"), &err, source_root) == SourceDir("//foo/"));
|
| + EXPECT_FALSE(err.has_error());
|
|
|
| // If the given relative path points outside the source root, we
|
| // expect an absolute path.
|
| #if defined(OS_WIN)
|
| - EXPECT_TRUE(base.ResolveRelativeDir("../../foo", source_root) ==
|
| - SourceDir("/C:/source/foo/"));
|
| + EXPECT_TRUE(base.ResolveRelativeDir(
|
| + Value(nullptr, "../../foo"), &err, source_root) ==
|
| + SourceDir("/C:/source/foo/"));
|
| + EXPECT_FALSE(err.has_error());
|
| #else
|
| - EXPECT_TRUE(base.ResolveRelativeDir("../../foo", source_root) ==
|
| - SourceDir("/source/foo/"));
|
| + EXPECT_TRUE(base.ResolveRelativeDir(
|
| + Value(nullptr, "../../foo"), &err, source_root) ==
|
| + SourceDir("/source/foo/"));
|
| + EXPECT_FALSE(err.has_error());
|
| #endif
|
|
|
| #if defined(OS_WIN)
|
| // Canonicalize the existing backslashes to forward slashes and add a
|
| // leading slash if necessary.
|
| - EXPECT_TRUE(base.ResolveRelativeDir("\\C:\\foo") == SourceDir("/C:/foo/"));
|
| - EXPECT_TRUE(base.ResolveRelativeDir("C:\\foo") == SourceDir("/C:/foo/"));
|
| + EXPECT_TRUE(base.ResolveRelativeDir(
|
| + Value(nullptr, "\\C:\\foo"), &err) == SourceDir("/C:/foo/"));
|
| + EXPECT_FALSE(err.has_error());
|
| + EXPECT_TRUE(base.ResolveRelativeDir(
|
| + Value(nullptr, "C:\\foo"), &err) == SourceDir("/C:/foo/"));
|
| + EXPECT_FALSE(err.has_error());
|
| #endif
|
| }
|
|
|