| Index: tools/gn/args_unittest.cc
|
| diff --git a/tools/gn/args_unittest.cc b/tools/gn/args_unittest.cc
|
| index 098f3dec8504975a55a136204f196cc12b74bd4c..cf51036fb66ea4af26f27bacda6078ffbfb965e7 100644
|
| --- a/tools/gn/args_unittest.cc
|
| +++ b/tools/gn/args_unittest.cc
|
| @@ -39,3 +39,43 @@ TEST(ArgsTest, VerifyAllOverridesUsed) {
|
| args.AddArgOverride("c", Value(nullptr, true));
|
| EXPECT_FALSE(args.VerifyAllOverridesUsed(&err));
|
| }
|
| +
|
| +// Ensure that arg overrides get only set after the they were declared.
|
| +TEST(ArgsTest, VerifyOverrideScope) {
|
| + TestWithScope setup;
|
| + Args args;
|
| + Err err;
|
| +
|
| + args.AddArgOverride("a", Value(nullptr, "avalue"));
|
| + args.AddArgOverride("current_os", Value(nullptr, "theiros"));
|
| +
|
| + Scope::KeyValueMap toolchain_overrides;
|
| + toolchain_overrides["b"] = Value(nullptr, "bvalue");
|
| + toolchain_overrides["current_os"] = Value(nullptr, "myos");
|
| + args.SetupRootScope(setup.scope(), toolchain_overrides);
|
| +
|
| + // Overrides of arguments not yet declared aren't applied yet.
|
| + EXPECT_EQ(nullptr, setup.scope()->GetValue("a"));
|
| + EXPECT_EQ(nullptr, setup.scope()->GetValue("b"));
|
| +
|
| + // |current_os| is a system var. and already declared.
|
| + // Thus it should have our override value.
|
| + ASSERT_NE(nullptr, setup.scope()->GetValue("current_os"));
|
| + EXPECT_EQ(Value(nullptr, "myos"), *setup.scope()->GetValue("current_os"));
|
| +
|
| + Scope::KeyValueMap key_value_map1;
|
| + key_value_map1["a"] = Value(nullptr, "avalue2");
|
| + key_value_map1["b"] = Value(nullptr, "bvalue2");
|
| + key_value_map1["c"] = Value(nullptr, "cvalue2");
|
| + EXPECT_TRUE(args.DeclareArgs(key_value_map1, setup.scope(), &err));
|
| +
|
| + ASSERT_NE(nullptr, setup.scope()->GetValue("a"));
|
| + EXPECT_EQ(Value(nullptr, "avalue"), *setup.scope()->GetValue("a"));
|
| +
|
| + ASSERT_NE(nullptr, setup.scope()->GetValue("b"));
|
| + EXPECT_EQ(Value(nullptr, "bvalue"), *setup.scope()->GetValue("b"));
|
| +
|
| + // This wasn't overwritten, so it should have the default value.
|
| + ASSERT_NE(nullptr, setup.scope()->GetValue("c"));
|
| + EXPECT_EQ(Value(nullptr, "cvalue2"), *setup.scope()->GetValue("c"));
|
| +}
|
|
|