| Index: tools/gn/scope_unittest.cc
|
| diff --git a/tools/gn/scope_unittest.cc b/tools/gn/scope_unittest.cc
|
| index a90d725d8dfb4326a0502f55cb8f5d34e133bfe1..7f0df43a4b0b308288c91976e8749567eaab875d 100644
|
| --- a/tools/gn/scope_unittest.cc
|
| +++ b/tools/gn/scope_unittest.cc
|
| @@ -51,7 +51,7 @@ TEST(Scope, NonRecursiveMergeTo) {
|
|
|
| // Detect collisions of values' values.
|
| {
|
| - Scope new_scope(setup.settings());
|
| + Scope new_scope(setup.settings(), {});
|
| Value new_value(&assignment, "goodbye");
|
| new_scope.SetValue("v", new_value, &assignment);
|
|
|
| @@ -64,7 +64,7 @@ TEST(Scope, NonRecursiveMergeTo) {
|
|
|
| // Template name collisions.
|
| {
|
| - Scope new_scope(setup.settings());
|
| + Scope new_scope(setup.settings(), {});
|
|
|
| scoped_refptr<Template> new_templ(
|
| new Template(&new_scope, &templ_definition));
|
| @@ -78,7 +78,7 @@ TEST(Scope, NonRecursiveMergeTo) {
|
|
|
| // The clobber flag should just overwrite colliding values.
|
| {
|
| - Scope new_scope(setup.settings());
|
| + Scope new_scope(setup.settings(), {});
|
| Value new_value(&assignment, "goodbye");
|
| new_scope.SetValue("v", new_value, &assignment);
|
|
|
| @@ -96,7 +96,7 @@ TEST(Scope, NonRecursiveMergeTo) {
|
|
|
| // Clobber flag for templates.
|
| {
|
| - Scope new_scope(setup.settings());
|
| + Scope new_scope(setup.settings(), {});
|
|
|
| scoped_refptr<Template> new_templ(
|
| new Template(&new_scope, &templ_definition));
|
| @@ -116,7 +116,7 @@ TEST(Scope, NonRecursiveMergeTo) {
|
|
|
| // Don't flag values that technically collide but have the same value.
|
| {
|
| - Scope new_scope(setup.settings());
|
| + Scope new_scope(setup.settings(), {});
|
| Value new_value(&assignment, "hello");
|
| new_scope.SetValue("v", new_value, &assignment);
|
|
|
| @@ -128,7 +128,7 @@ TEST(Scope, NonRecursiveMergeTo) {
|
|
|
| // Templates that technically collide but are the same.
|
| {
|
| - Scope new_scope(setup.settings());
|
| + Scope new_scope(setup.settings(), {});
|
|
|
| scoped_refptr<Template> new_templ(
|
| new Template(&new_scope, &templ_definition));
|
| @@ -142,7 +142,7 @@ TEST(Scope, NonRecursiveMergeTo) {
|
|
|
| // Copy private values and templates.
|
| {
|
| - Scope new_scope(setup.settings());
|
| + Scope new_scope(setup.settings(), {});
|
|
|
| Err err;
|
| EXPECT_TRUE(setup.scope()->NonRecursiveMergeTo(
|
| @@ -154,7 +154,7 @@ TEST(Scope, NonRecursiveMergeTo) {
|
|
|
| // Skip private values and templates.
|
| {
|
| - Scope new_scope(setup.settings());
|
| + Scope new_scope(setup.settings(), {});
|
|
|
| Err err;
|
| Scope::MergeOptions options;
|
| @@ -168,7 +168,7 @@ TEST(Scope, NonRecursiveMergeTo) {
|
|
|
| // Don't mark used.
|
| {
|
| - Scope new_scope(setup.settings());
|
| + Scope new_scope(setup.settings(), {});
|
|
|
| Err err;
|
| Scope::MergeOptions options;
|
| @@ -181,7 +181,7 @@ TEST(Scope, NonRecursiveMergeTo) {
|
|
|
| // Mark dest used.
|
| {
|
| - Scope new_scope(setup.settings());
|
| + Scope new_scope(setup.settings(), {});
|
|
|
| Err err;
|
| Scope::MergeOptions options;
|
| @@ -192,6 +192,23 @@ TEST(Scope, NonRecursiveMergeTo) {
|
| EXPECT_TRUE(new_scope.CheckForUnusedVars(&err));
|
| EXPECT_FALSE(err.has_error());
|
| }
|
| +
|
| + // Input files are merged.
|
| + {
|
| + InputFile gni_input_file(SourceFile("//features.gni"));
|
| + InputFile root_input_file(SourceFile("//BUILD.gn"));
|
| + Scope gni_scope(setup.settings(), {&gni_input_file});
|
| + Scope new_scope(setup.settings(), {&root_input_file});
|
| +
|
| + Err err;
|
| + Scope::MergeOptions options;
|
| + EXPECT_TRUE(gni_scope.NonRecursiveMergeTo(&new_scope, options, &assignment,
|
| + "error", &err));
|
| + EXPECT_FALSE(err.has_error());
|
| + const auto& input_files = new_scope.input_files();
|
| + EXPECT_NE(input_files.end(), input_files.find(&gni_input_file));
|
| + EXPECT_NE(input_files.end(), input_files.find(&root_input_file));
|
| + }
|
| }
|
|
|
| TEST(Scope, MakeClosure) {
|
| @@ -207,6 +224,8 @@ TEST(Scope, MakeClosure) {
|
| assignment.set_value(assignment_token);
|
| setup.scope()->SetValue("on_root", Value(&assignment, "on_root"),
|
| &assignment);
|
| + InputFile gni_input_file(SourceFile("//features.gni"));
|
| + setup.scope()->AddInputFile(&gni_input_file);
|
|
|
| // Root scope should be const from the nested caller's perspective.
|
| Scope nested1(static_cast<const Scope*>(setup.scope()));
|
| @@ -228,6 +247,15 @@ TEST(Scope, MakeClosure) {
|
| EXPECT_TRUE(HasStringValueEqualTo(result.get(), "on_root", "on_root"));
|
| EXPECT_TRUE(HasStringValueEqualTo(result.get(), "on_one", "on_two"));
|
| EXPECT_TRUE(HasStringValueEqualTo(result.get(), "on_two", "on_two2"));
|
| +
|
| + {
|
| + const auto& input_files = nested1.input_files();
|
| + EXPECT_NE(input_files.end(), input_files.find(&gni_input_file));
|
| + }
|
| + {
|
| + const auto& input_files = nested2.input_files();
|
| + EXPECT_NE(input_files.end(), input_files.find(&gni_input_file));
|
| + }
|
| }
|
|
|
| TEST(Scope, GetMutableValue) {
|
| @@ -248,7 +276,7 @@ TEST(Scope, GetMutableValue) {
|
| Value value(&assignment, "hello");
|
|
|
| // Create a root scope with one value.
|
| - Scope root_scope(setup.settings());
|
| + Scope root_scope(setup.settings(), {});
|
| root_scope.SetValue(kOnConst, value, &assignment);
|
|
|
| // Create a first nested scope with a different value.
|
|
|