fix: reject empty user_input_form items instead of raising IndexError

Signed-off-by: Yufeng He <40085740+he-yufeng@users.noreply.github.com>
This commit is contained in:
Yufeng He 2026-06-20 01:26:52 +08:00
parent fae607e2fe
commit eccf0edbba
2 changed files with 18 additions and 0 deletions

View File

@ -45,6 +45,8 @@ class BasicVariablesConfigManager:
# variables and external_data_tools
for variables in config.get("user_input_form", []):
if not variables:
continue
variable_type = list(variables.keys())[0]
if variable_type == VariableEntityType.EXTERNAL_DATA_TOOL:
variable = variables[variable_type]
@ -112,6 +114,8 @@ class BasicVariablesConfigManager:
variables = []
for item in config["user_input_form"]:
if not item:
raise ValueError("Each item in user_input_form must be a non-empty object")
key = list(item.keys())[0]
# if key not in {"text-input", "select", "paragraph", "number", "external_data_tool"}:
if key not in {

View File

@ -70,6 +70,14 @@ class TestBasicVariablesConfigManagerConvert:
assert len(variables) == 2
assert len(external) == 1
def test_convert_empty_form_item_skipped(self):
config = {"user_input_form": [{}]}
variables, external = BasicVariablesConfigManager.convert(config)
assert variables == []
assert external == []
def test_convert_external_data_tool_without_config_skipped(self):
config = {
"user_input_form": [
@ -109,6 +117,12 @@ class TestValidateVariablesAndSetDefaults:
with pytest.raises(ValueError):
BasicVariablesConfigManager.validate_variables_and_set_defaults(config)
def test_validate_empty_form_item_raises(self):
config = {"user_input_form": [{}]}
with pytest.raises(ValueError):
BasicVariablesConfigManager.validate_variables_and_set_defaults(config)
def test_validate_missing_label_raises(self):
config = {"user_input_form": [{VariableEntityType.TEXT_INPUT: {"variable": "name"}}]}