Skip to content

Commit b1df306

Browse files
authored
Dont guess at mappings when values are static (#3875)
1 parent 8454bc9 commit b1df306

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

src/cfnlint/template/transforms/_language_extensions.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -403,11 +403,14 @@ def value(
403403
return self._map[3].value(cfn, params, only_params)
404404
# no default value and map 1 exists
405405
try:
406-
for _, v in mapping.get(
407-
t_map[1].value(cfn, params, only_params), {}
408-
).items():
409-
if isinstance(v, list):
410-
return v
406+
if isinstance(
407+
t_map[2], (_ForEachValueRef, _ForEachValueFnFindInMap)
408+
):
409+
for _, v in mapping.get(
410+
t_map[1].value(cfn, params, only_params), {}
411+
).items():
412+
if isinstance(v, list):
413+
return v
411414
except _ResolveError:
412415
pass
413416
raise _ResolveError("Can't resolve Fn::FindInMap", self._obj) from e

test/unit/module/template/transforms/test_language_extensions.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,14 @@ def test_find_in_map_values_not_found_with_default(self):
305305
)
306306

307307
self.assertEqual(map.value(self.cfn, None, False, True), "bar")
308-
self.assertEqual(map.value(self.cfn, None, False, False), ["foo", "bar"])
308+
with self.assertRaises(_ResolveError):
309+
map.value(self.cfn, None, False, False)
310+
311+
def test_find_in_map_values_strings_without_default(self):
312+
map = _ForEachValueFnFindInMap("a", ["Bucket", "Production", "DNE"])
313+
314+
with self.assertRaises(_ResolveError):
315+
map.value(self.cfn, None, False, True)
309316

310317
def test_find_in_map_values_without_default(self):
311318
map = _ForEachValueFnFindInMap("a", ["Bucket", {"Ref": "Foo"}, "Key"])

0 commit comments

Comments
 (0)