Skip to content

Commit f8117d1

Browse files
jnthntatumcopybara-github
authored andcommitted
Add support for old style variable format in env yaml parser.
PiperOrigin-RevId: 929313905
1 parent a8b3224 commit f8117d1

2 files changed

Lines changed: 26 additions & 2 deletions

File tree

env/env_yaml.cc

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -620,8 +620,14 @@ absl::Status ParseVariableConfigs(Config& config, absl::string_view yaml,
620620
}
621621
variable_config.description = GetString(yaml, description);
622622
}
623-
624-
CEL_ASSIGN_OR_RETURN(auto type_info, ParseTypeInfo(variable, yaml));
623+
const YAML::Node type = variable["type"];
624+
Config::TypeInfo type_info;
625+
if (type.IsDefined() && !type.IsScalar()) {
626+
// Old format, type spec is in 'type' instead of directly embedded.
627+
CEL_ASSIGN_OR_RETURN(type_info, ParseTypeInfo(variable["type"], yaml));
628+
} else {
629+
CEL_ASSIGN_OR_RETURN(type_info, ParseTypeInfo(variable, yaml));
630+
}
625631
ConstantKindCase constant_kind_case = GetConstantKindCase(type_info.name);
626632
std::string value_str;
627633
YAML::Node value = variable["value"];

env/env_yaml_test.cc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,24 @@ TEST(EnvYamlTest, ParseVariableConfigWithTypeParamsLegacySyntax) {
242242
EXPECT_THAT(type_info.params[1].params, IsEmpty());
243243
}
244244

245+
TEST(EnvYamlTest, ParseVariableConfigWithNestedRuleOldFormat) {
246+
ASSERT_OK_AND_ASSIGN(Config config, EnvConfigFromYaml(R"yaml(
247+
variables:
248+
- name: "x"
249+
type:
250+
type_name: "int"
251+
)yaml"));
252+
253+
ASSERT_THAT(config.GetVariableConfigs(), SizeIs(1));
254+
const Config::VariableConfig& variable_config =
255+
config.GetVariableConfigs()[0];
256+
EXPECT_EQ(variable_config.name, "x");
257+
const auto& type_info = variable_config.type_info;
258+
EXPECT_EQ(type_info.name, "int");
259+
EXPECT_FALSE(type_info.is_type_param);
260+
EXPECT_THAT(type_info.params, IsEmpty());
261+
}
262+
245263
struct ParseConstantTestCase {
246264
std::string type;
247265
std::string value;

0 commit comments

Comments
 (0)