Commit b68187e
committed
fix(workflows): validate non-mapping 'options' in command step (#3493)
The `command` step's `execute()` merges `options` into a dict via
`options.update(step_options)`, but `validate()` did not check the type
and the merge was gated only on truthiness (`if step_options`). A
workflow with `options: [1, 2]` or `options: "foo"` therefore passed
validation and crashed at runtime with:
TypeError: cannot convert dictionary update sequence element #0 to a sequence
Follow the pattern already applied by the shell / while-loop / do-while
validators and by the sibling `input`-validation change in #3492: reject
the non-mapping value in `validate()` with a message that names the
field, and defensively guard the `.update()` in `execute()` so a caller
that skips `WorkflowEngine.validate()` fails cleanly rather than raising
an internal `dict.update` traceback.
Fixes #34931 parent 6664cf8 commit b68187e
2 files changed
Lines changed: 59 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
50 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
51 | 55 | | |
52 | 56 | | |
53 | | - | |
| 57 | + | |
54 | 58 | | |
55 | 59 | | |
56 | 60 | | |
| |||
155 | 159 | | |
156 | 160 | | |
157 | 161 | | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
158 | 171 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
953 | 953 | | |
954 | 954 | | |
955 | 955 | | |
| 956 | + | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
956 | 1000 | | |
957 | 1001 | | |
958 | 1002 | | |
| |||
0 commit comments