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

Unified Diff: tools/gn/file_template_unittest.cc

Issue 387663003: Improve GN handling of directory templates. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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
« no previous file with comments | « tools/gn/file_template.cc ('k') | tools/gn/filesystem_utils.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/file_template_unittest.cc
diff --git a/tools/gn/file_template_unittest.cc b/tools/gn/file_template_unittest.cc
index d10791eeb4fc9fe0e9614edf578f27af558e7765..eab52858396d3cd7f59f7ffbe1694856a805fb74 100644
--- a/tools/gn/file_template_unittest.cc
+++ b/tools/gn/file_template_unittest.cc
@@ -14,7 +14,8 @@ TEST(FileTemplate, Static) {
std::vector<std::string> templates;
templates.push_back("something_static");
- FileTemplate t(setup.settings(), templates);
+ FileTemplate t(setup.settings(), templates,
+ FileTemplate::OUTPUT_ABSOLUTE, SourceDir("//"));
EXPECT_FALSE(t.has_substitutions());
std::vector<std::string> result;
@@ -29,7 +30,8 @@ TEST(FileTemplate, Typical) {
std::vector<std::string> templates;
templates.push_back("foo/{{source_name_part}}.cc");
templates.push_back("foo/{{source_name_part}}.h");
- FileTemplate t(setup.settings(), templates);
+ FileTemplate t(setup.settings(), templates,
+ FileTemplate::OUTPUT_ABSOLUTE, SourceDir("//"));
EXPECT_TRUE(t.has_substitutions());
std::vector<std::string> result;
@@ -44,7 +46,9 @@ TEST(FileTemplate, Weird) {
std::vector<std::string> templates;
templates.push_back("{{{source}}{{source}}{{");
- FileTemplate t(setup.settings(), templates);
+ FileTemplate t(setup.settings(), templates,
+ FileTemplate::OUTPUT_RELATIVE,
+ setup.settings()->build_settings()->build_dir());
EXPECT_TRUE(t.has_substitutions());
std::vector<std::string> result;
@@ -62,7 +66,9 @@ TEST(FileTemplate, NinjaExpansions) {
templates.push_back("--out=foo bar\"{{source_name_part}}\".o");
templates.push_back(""); // Test empty string.
- FileTemplate t(setup.settings(), templates);
+ FileTemplate t(setup.settings(), templates,
+ FileTemplate::OUTPUT_RELATIVE,
+ setup.settings()->build_settings()->build_dir());
std::ostringstream out;
t.WriteWithNinjaExpansions(out);
@@ -95,13 +101,15 @@ TEST(FileTemplate, NinjaVariables) {
templates.push_back("{{source_gen_dir}}");
templates.push_back("{{source_out_dir}}");
- FileTemplate t(setup.settings(), templates);
+ FileTemplate t(setup.settings(), templates,
+ FileTemplate::OUTPUT_RELATIVE,
+ setup.settings()->build_settings()->build_dir());
std::ostringstream out;
EscapeOptions options;
options.mode = ESCAPE_NINJA_COMMAND;
- t.WriteNinjaVariablesForSubstitution(out, setup.settings(),
- SourceFile("//foo/bar.txt"), options);
+ t.WriteNinjaVariablesForSubstitution(out, SourceFile("//foo/bar.txt"),
+ options);
// Just the variables used above should be written.
EXPECT_EQ(
@@ -120,27 +128,56 @@ TEST(FileTemplate, NinjaVariables) {
TEST(FileTemplate, Substitutions) {
TestWithScope setup;
- #define GetSubst(str, what) \
- FileTemplate::GetSubstitution(setup.settings(), \
- SourceFile(str), \
- FileTemplate::Subrange::what)
+ // Call to get substitutions relative to the build dir.
+ #define GetRelSubst(str, what) \
+ FileTemplate::GetSubstitution( \
+ setup.settings(), \
+ SourceFile(str), \
+ FileTemplate::Subrange::what, \
+ FileTemplate::OUTPUT_RELATIVE, \
+ setup.settings()->build_settings()->build_dir())
+
+ // Call to get absolute directory substitutions.
+ #define GetAbsSubst(str, what) \
+ FileTemplate::GetSubstitution( \
+ setup.settings(), \
+ SourceFile(str), \
+ FileTemplate::Subrange::what, \
+ FileTemplate::OUTPUT_ABSOLUTE, \
+ SourceDir())
// Try all possible templates with a normal looking string.
- EXPECT_EQ("../../foo/bar/baz.txt", GetSubst("//foo/bar/baz.txt", SOURCE));
- EXPECT_EQ("baz", GetSubst("//foo/bar/baz.txt", NAME_PART));
- EXPECT_EQ("baz.txt", GetSubst("//foo/bar/baz.txt", FILE_PART));
- EXPECT_EQ("../../foo/bar", GetSubst("//foo/bar/baz.txt", SOURCE_DIR));
- EXPECT_EQ("foo/bar", GetSubst("//foo/bar/baz.txt", ROOT_RELATIVE_DIR));
- EXPECT_EQ("gen/foo/bar", GetSubst("//foo/bar/baz.txt", SOURCE_GEN_DIR));
- EXPECT_EQ("obj/foo/bar", GetSubst("//foo/bar/baz.txt", SOURCE_OUT_DIR));
+ EXPECT_EQ("../../foo/bar/baz.txt", GetRelSubst("//foo/bar/baz.txt", SOURCE));
+ EXPECT_EQ("//foo/bar/baz.txt", GetAbsSubst("//foo/bar/baz.txt", SOURCE));
+
+ EXPECT_EQ("baz", GetRelSubst("//foo/bar/baz.txt", NAME_PART));
+ EXPECT_EQ("baz", GetAbsSubst("//foo/bar/baz.txt", NAME_PART));
+
+ EXPECT_EQ("baz.txt", GetRelSubst("//foo/bar/baz.txt", FILE_PART));
+ EXPECT_EQ("baz.txt", GetAbsSubst("//foo/bar/baz.txt", FILE_PART));
+
+ EXPECT_EQ("../../foo/bar", GetRelSubst("//foo/bar/baz.txt", SOURCE_DIR));
+ EXPECT_EQ("//foo/bar", GetAbsSubst("//foo/bar/baz.txt", SOURCE_DIR));
+
+ EXPECT_EQ("foo/bar", GetRelSubst("//foo/bar/baz.txt", ROOT_RELATIVE_DIR));
+ EXPECT_EQ("foo/bar", GetAbsSubst("//foo/bar/baz.txt", ROOT_RELATIVE_DIR));
+
+ EXPECT_EQ("gen/foo/bar", GetRelSubst("//foo/bar/baz.txt", SOURCE_GEN_DIR));
+ EXPECT_EQ("//out/Debug/gen/foo/bar",
+ GetAbsSubst("//foo/bar/baz.txt", SOURCE_GEN_DIR));
+
+ EXPECT_EQ("obj/foo/bar", GetRelSubst("//foo/bar/baz.txt", SOURCE_OUT_DIR));
+ EXPECT_EQ("//out/Debug/obj/foo/bar",
+ GetAbsSubst("//foo/bar/baz.txt", SOURCE_OUT_DIR));
// Operations on an absolute path.
- EXPECT_EQ("/baz.txt", GetSubst("/baz.txt", SOURCE));
- EXPECT_EQ("/.", GetSubst("/baz.txt", SOURCE_DIR));
- EXPECT_EQ("gen", GetSubst("/baz.txt", SOURCE_GEN_DIR));
- EXPECT_EQ("obj", GetSubst("/baz.txt", SOURCE_OUT_DIR));
+ EXPECT_EQ("/baz.txt", GetRelSubst("/baz.txt", SOURCE));
+ EXPECT_EQ("/.", GetRelSubst("/baz.txt", SOURCE_DIR));
+ EXPECT_EQ("gen", GetRelSubst("/baz.txt", SOURCE_GEN_DIR));
+ EXPECT_EQ("obj", GetRelSubst("/baz.txt", SOURCE_OUT_DIR));
- EXPECT_EQ(".", GetSubst("//baz.txt", ROOT_RELATIVE_DIR));
+ EXPECT_EQ(".", GetRelSubst("//baz.txt", ROOT_RELATIVE_DIR));
- #undef GetSubst
+ #undef GetAbsSubst
+ #undef GetRelSubst
}
« no previous file with comments | « tools/gn/file_template.cc ('k') | tools/gn/filesystem_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698