| Index: tools/gn/filesystem_utils_unittest.cc
|
| diff --git a/tools/gn/filesystem_utils_unittest.cc b/tools/gn/filesystem_utils_unittest.cc
|
| index 894b3da7d2393cc2549bd6ef020e34c7fa23a31d..240ed61f7ab136b91b69ad2a38acb4e5d0b04f0e 100644
|
| --- a/tools/gn/filesystem_utils_unittest.cc
|
| +++ b/tools/gn/filesystem_utils_unittest.cc
|
| @@ -638,47 +638,61 @@ TEST(FilesystemUtils, GetToolchainDirs) {
|
| Label default_toolchain_label(SourceDir("//toolchain/"), "default");
|
| default_settings.set_toolchain_label(default_toolchain_label);
|
| default_settings.set_default_toolchain_label(default_toolchain_label);
|
| + BuildDirContext default_context(&default_settings);
|
|
|
| - // Default toolchain out dir.
|
| + // Default toolchain out dir as source dirs.
|
| EXPECT_EQ("//out/Debug/",
|
| - GetToolchainOutputDir(&default_settings).value());
|
| - EXPECT_EQ("//out/Debug/",
|
| - GetToolchainOutputDir(&build_settings, default_toolchain_label,
|
| - true).value());
|
| -
|
| - // Default toolchain gen dir.
|
| + GetBuildDirAsSourceDir(default_context,
|
| + BuildDirType::TOOLCHAIN_ROOT).value());
|
| + EXPECT_EQ("//out/Debug/obj/",
|
| + GetBuildDirAsSourceDir(default_context,
|
| + BuildDirType::OBJ).value());
|
| EXPECT_EQ("//out/Debug/gen/",
|
| - GetToolchainGenDir(&default_settings).value());
|
| + GetBuildDirAsSourceDir(default_context,
|
| + BuildDirType::GEN).value());
|
| +
|
| + // Default toolchain our dir as output files.
|
| + EXPECT_EQ("",
|
| + GetBuildDirAsOutputFile(default_context,
|
| + BuildDirType::TOOLCHAIN_ROOT).value());
|
| + EXPECT_EQ("obj/",
|
| + GetBuildDirAsOutputFile(default_context,
|
| + BuildDirType::OBJ).value());
|
| EXPECT_EQ("gen/",
|
| - GetToolchainGenDirAsOutputFile(&default_settings).value());
|
| - EXPECT_EQ("//out/Debug/gen/",
|
| - GetToolchainGenDir(&build_settings, default_toolchain_label,
|
| - true).value());
|
| + GetBuildDirAsOutputFile(default_context,
|
| + BuildDirType::GEN).value());
|
|
|
| // Check a secondary toolchain.
|
| Settings other_settings(&build_settings, "two/");
|
| Label other_toolchain_label(SourceDir("//toolchain/"), "two");
|
| - default_settings.set_toolchain_label(other_toolchain_label);
|
| - default_settings.set_default_toolchain_label(default_toolchain_label);
|
| + other_settings.set_toolchain_label(other_toolchain_label);
|
| + other_settings.set_default_toolchain_label(default_toolchain_label);
|
| + BuildDirContext other_context(&other_settings);
|
|
|
| - // Secondary toolchain out dir.
|
| - EXPECT_EQ("//out/Debug/two/",
|
| - GetToolchainOutputDir(&other_settings).value());
|
| + // Secondary toolchain out dir as source dirs.
|
| EXPECT_EQ("//out/Debug/two/",
|
| - GetToolchainOutputDir(&build_settings, other_toolchain_label,
|
| - false).value());
|
| -
|
| - // Secondary toolchain gen dir.
|
| + GetBuildDirAsSourceDir(other_context,
|
| + BuildDirType::TOOLCHAIN_ROOT).value());
|
| + EXPECT_EQ("//out/Debug/two/obj/",
|
| + GetBuildDirAsSourceDir(other_context,
|
| + BuildDirType::OBJ).value());
|
| EXPECT_EQ("//out/Debug/two/gen/",
|
| - GetToolchainGenDir(&other_settings).value());
|
| + GetBuildDirAsSourceDir(other_context,
|
| + BuildDirType::GEN).value());
|
| +
|
| + // Secondary toolchain out dir as output files.
|
| + EXPECT_EQ("two/",
|
| + GetBuildDirAsOutputFile(other_context,
|
| + BuildDirType::TOOLCHAIN_ROOT).value());
|
| + EXPECT_EQ("two/obj/",
|
| + GetBuildDirAsOutputFile(other_context,
|
| + BuildDirType::OBJ).value());
|
| EXPECT_EQ("two/gen/",
|
| - GetToolchainGenDirAsOutputFile(&other_settings).value());
|
| - EXPECT_EQ("//out/Debug/two/gen/",
|
| - GetToolchainGenDir(&build_settings, other_toolchain_label,
|
| - false).value());
|
| + GetBuildDirAsOutputFile(other_context,
|
| + BuildDirType::GEN).value());
|
| }
|
|
|
| -TEST(FilesystemUtils, GetOutDirForSourceDir) {
|
| +TEST(FilesystemUtils, GetSubBuildDir) {
|
| BuildSettings build_settings;
|
| build_settings.SetBuildDir(SourceDir("//out/Debug/"));
|
|
|
| @@ -687,102 +701,83 @@ TEST(FilesystemUtils, GetOutDirForSourceDir) {
|
| Settings default_settings(&build_settings, "");
|
| default_settings.set_toolchain_label(default_toolchain_label);
|
| default_settings.set_default_toolchain_label(default_toolchain_label);
|
| + BuildDirContext default_context(&default_settings);
|
| +
|
| + // Target in the root.
|
| EXPECT_EQ("//out/Debug/obj/",
|
| - GetOutputDirForSourceDir(
|
| - &default_settings, SourceDir("//")).value());
|
| - EXPECT_EQ("obj/",
|
| - GetOutputDirForSourceDirAsOutputFile(
|
| - &default_settings, SourceDir("//")).value());
|
| + GetSubBuildDirAsSourceDir(
|
| + default_context, SourceDir("//"), BuildDirType::OBJ).value());
|
| + EXPECT_EQ("gen/",
|
| + GetSubBuildDirAsOutputFile(
|
| + default_context, SourceDir("//"), BuildDirType::GEN).value());
|
|
|
| + // Target in another directory.
|
| EXPECT_EQ("//out/Debug/obj/foo/bar/",
|
| - GetOutputDirForSourceDir(
|
| - &default_settings, SourceDir("//foo/bar/")).value());
|
| - EXPECT_EQ("obj/foo/bar/",
|
| - GetOutputDirForSourceDirAsOutputFile(
|
| - &default_settings, SourceDir("//foo/bar/")).value());
|
| + GetSubBuildDirAsSourceDir(
|
| + default_context, SourceDir("//foo/bar/"), BuildDirType::OBJ)
|
| + .value());
|
| + EXPECT_EQ("gen/foo/bar/",
|
| + GetSubBuildDirAsOutputFile(
|
| + default_context, SourceDir("//foo/bar/"), BuildDirType::GEN)
|
| + .value());
|
|
|
| // Secondary toolchain.
|
| Settings other_settings(&build_settings, "two/");
|
| other_settings.set_toolchain_label(Label(SourceDir("//toolchain/"), "two"));
|
| other_settings.set_default_toolchain_label(default_toolchain_label);
|
| + BuildDirContext other_context(&other_settings);
|
| +
|
| + // Target in the root.
|
| EXPECT_EQ("//out/Debug/two/obj/",
|
| - GetOutputDirForSourceDir(
|
| - &other_settings, SourceDir("//")).value());
|
| - EXPECT_EQ("two/obj/",
|
| - GetOutputDirForSourceDirAsOutputFile(
|
| - &other_settings, SourceDir("//")).value());
|
| + GetSubBuildDirAsSourceDir(
|
| + other_context, SourceDir("//"), BuildDirType::OBJ).value());
|
| + EXPECT_EQ("two/gen/",
|
| + GetSubBuildDirAsOutputFile(
|
| + other_context, SourceDir("//"), BuildDirType::GEN).value());
|
|
|
| + // Target in another directory.
|
| EXPECT_EQ("//out/Debug/two/obj/foo/bar/",
|
| - GetOutputDirForSourceDir(&other_settings,
|
| - SourceDir("//foo/bar/")).value());
|
| - EXPECT_EQ("two/obj/foo/bar/",
|
| - GetOutputDirForSourceDirAsOutputFile(
|
| - &other_settings, SourceDir("//foo/bar/")).value());
|
| + GetSubBuildDirAsSourceDir(
|
| + other_context, SourceDir("//foo/bar/"), BuildDirType::OBJ)
|
| + .value());
|
| + EXPECT_EQ("two/gen/foo/bar/",
|
| + GetSubBuildDirAsOutputFile(
|
| + other_context, SourceDir("//foo/bar/"), BuildDirType::GEN)
|
| + .value());
|
|
|
| // Absolute source path
|
| EXPECT_EQ("//out/Debug/obj/ABS_PATH/abs/",
|
| - GetOutputDirForSourceDir(
|
| - &default_settings, SourceDir("/abs")).value());
|
| - EXPECT_EQ("obj/ABS_PATH/abs/",
|
| - GetOutputDirForSourceDirAsOutputFile(
|
| - &default_settings, SourceDir("/abs")).value());
|
| + GetSubBuildDirAsSourceDir(
|
| + default_context, SourceDir("/abs"), BuildDirType::OBJ).value());
|
| + EXPECT_EQ("gen/ABS_PATH/abs/",
|
| + GetSubBuildDirAsOutputFile(
|
| + default_context, SourceDir("/abs"), BuildDirType::GEN).value());
|
| #if defined(OS_WIN)
|
| EXPECT_EQ("//out/Debug/obj/ABS_PATH/C/abs/",
|
| - GetOutputDirForSourceDir(
|
| - &default_settings, SourceDir("/C:/abs")).value());
|
| - EXPECT_EQ("obj/ABS_PATH/C/abs/",
|
| - GetOutputDirForSourceDirAsOutputFile(
|
| - &default_settings, SourceDir("/C:/abs")).value());
|
| + GetSubBuildDirAsSourceDir(
|
| + default_context, SourceDir("/C:/abs"), BuildDirType::OBJ)
|
| + .value());
|
| + EXPECT_EQ("gen/ABS_PATH/C/abs/",
|
| + GetSubBuildDirAsOutputFile(
|
| + default_context, SourceDir("/C:/abs"), BuildDirType::GEN)
|
| + .value());
|
| #endif
|
| }
|
|
|
| -TEST(FilesystemUtils, GetGenDirForSourceDir) {
|
| - BuildSettings build_settings;
|
| - build_settings.SetBuildDir(SourceDir("//out/Debug/"));
|
| -
|
| - // Test the default toolchain.
|
| - Settings default_settings(&build_settings, "");
|
| - EXPECT_EQ("//out/Debug/gen/",
|
| - GetGenDirForSourceDir(
|
| - &default_settings, SourceDir("//")).value());
|
| - EXPECT_EQ("gen/",
|
| - GetGenDirForSourceDirAsOutputFile(
|
| - &default_settings, SourceDir("//")).value());
|
| -
|
| - EXPECT_EQ("//out/Debug/gen/foo/bar/",
|
| - GetGenDirForSourceDir(
|
| - &default_settings, SourceDir("//foo/bar/")).value());
|
| - EXPECT_EQ("gen/foo/bar/",
|
| - GetGenDirForSourceDirAsOutputFile(
|
| - &default_settings, SourceDir("//foo/bar/")).value());
|
| -
|
| - // Secondary toolchain.
|
| - Settings other_settings(&build_settings, "two/");
|
| - EXPECT_EQ("//out/Debug/two/gen/",
|
| - GetGenDirForSourceDir(
|
| - &other_settings, SourceDir("//")).value());
|
| - EXPECT_EQ("two/gen/",
|
| - GetGenDirForSourceDirAsOutputFile(
|
| - &other_settings, SourceDir("//")).value());
|
| -
|
| - EXPECT_EQ("//out/Debug/two/gen/foo/bar/",
|
| - GetGenDirForSourceDir(
|
| - &other_settings, SourceDir("//foo/bar/")).value());
|
| - EXPECT_EQ("two/gen/foo/bar/",
|
| - GetGenDirForSourceDirAsOutputFile(
|
| - &other_settings, SourceDir("//foo/bar/")).value());
|
| -}
|
| -
|
| -TEST(FilesystemUtils, GetTargetDirs) {
|
| +TEST(FilesystemUtils, GetBuildDirForTarget) {
|
| BuildSettings build_settings;
|
| build_settings.SetBuildDir(SourceDir("//out/Debug/"));
|
| Settings settings(&build_settings, "");
|
|
|
| Target a(&settings, Label(SourceDir("//foo/bar/"), "baz"));
|
| - EXPECT_EQ("//out/Debug/obj/foo/bar/", GetTargetOutputDir(&a).value());
|
| - EXPECT_EQ("obj/foo/bar/", GetTargetOutputDirAsOutputFile(&a).value());
|
| - EXPECT_EQ("//out/Debug/gen/foo/bar/", GetTargetGenDir(&a).value());
|
| - EXPECT_EQ("gen/foo/bar/", GetTargetGenDirAsOutputFile(&a).value());
|
| + EXPECT_EQ("//out/Debug/obj/foo/bar/",
|
| + GetBuildDirForTargetAsSourceDir(&a, BuildDirType::OBJ).value());
|
| + EXPECT_EQ("obj/foo/bar/",
|
| + GetBuildDirForTargetAsOutputFile(&a, BuildDirType::OBJ).value());
|
| + EXPECT_EQ("//out/Debug/gen/foo/bar/",
|
| + GetBuildDirForTargetAsSourceDir(&a, BuildDirType::GEN).value());
|
| + EXPECT_EQ("gen/foo/bar/",
|
| + GetBuildDirForTargetAsOutputFile(&a, BuildDirType::GEN).value());
|
| }
|
|
|
| // Tests handling of output dirs when build dir is the same as the root.
|
| @@ -791,15 +786,21 @@ TEST(FilesystemUtils, GetDirForEmptyBuildDir) {
|
| build_settings.SetBuildDir(SourceDir("//"));
|
| Settings settings(&build_settings, "");
|
|
|
| - EXPECT_EQ("//", GetToolchainOutputDir(&settings).value());
|
| - EXPECT_EQ("//gen/", GetToolchainGenDir(&settings).value());
|
| - EXPECT_EQ("gen/", GetToolchainGenDirAsOutputFile(&settings).value());
|
| + BuildDirContext context(&settings);
|
| +
|
| + EXPECT_EQ("//",
|
| + GetBuildDirAsSourceDir(context, BuildDirType::TOOLCHAIN_ROOT)
|
| + .value());
|
| + EXPECT_EQ("//gen/",
|
| + GetBuildDirAsSourceDir(context, BuildDirType::GEN).value());
|
| EXPECT_EQ("//obj/",
|
| - GetOutputDirForSourceDir(&settings, SourceDir("//")).value());
|
| - EXPECT_EQ("obj/",
|
| - GetOutputDirForSourceDirAsOutputFile(
|
| - &settings, SourceDir("//")).value());
|
| + GetBuildDirAsSourceDir(context, BuildDirType::OBJ).value());
|
| +
|
| + EXPECT_EQ("",
|
| + GetBuildDirAsOutputFile(context, BuildDirType::TOOLCHAIN_ROOT)
|
| + .value());
|
| EXPECT_EQ("gen/",
|
| - GetGenDirForSourceDirAsOutputFile(
|
| - &settings, SourceDir("//")).value());
|
| + GetBuildDirAsOutputFile(context, BuildDirType::GEN).value());
|
| + EXPECT_EQ("obj/",
|
| + GetBuildDirAsOutputFile(context, BuildDirType::OBJ).value());
|
| }
|
|
|