Skip to content

Commit d3cd218

Browse files
committed
nit: add extra validation
1 parent 31cf82c commit d3cd218

2 files changed

Lines changed: 25 additions & 2 deletions

File tree

samcli/lib/build/app_builder.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -442,8 +442,11 @@ def _build_lambda_image(self, function_name: str, metadata: Dict, architecture:
442442
if not isinstance(docker_build_args, dict):
443443
raise DockerBuildFailed("DockerBuildArgs needs to be a dictionary!")
444444

445-
if docker_build_extra_params is not None and not isinstance(docker_build_extra_params, list):
446-
raise DockerBuildFailed("DockerBuildExtraParams needs to be a list!")
445+
if docker_build_extra_params is not None and (
446+
not isinstance(docker_build_extra_params, list)
447+
or not all(isinstance(p, str) for p in docker_build_extra_params)
448+
):
449+
raise DockerBuildFailed("DockerBuildExtraParams must be a list of strings!")
447450

448451
docker_context_dir = pathlib.Path(self._base_dir, docker_context).resolve()
449452

tests/unit/lib/build_module/test_app_builder.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1792,6 +1792,26 @@ def test_can_build_image_function_with_extra_params(self):
17921792
call_kwargs = mock_build_client.build_image.call_args[1]
17931793
self.assertEqual(call_kwargs["extra_params"], ["--ssh", "default"])
17941794

1795+
def test_build_lambda_image_raises_for_non_list_docker_build_extra_params(self):
1796+
metadata = {
1797+
"Dockerfile": "Dockerfile",
1798+
"DockerContext": "context",
1799+
"DockerTag": "Tag",
1800+
"DockerBuildExtraParams": "--ssh default",
1801+
}
1802+
with self.assertRaises(DockerBuildFailed):
1803+
self.builder._build_lambda_image("Name", metadata, X86_64)
1804+
1805+
def test_build_lambda_image_raises_for_non_string_docker_build_extra_params_element(self):
1806+
metadata = {
1807+
"Dockerfile": "Dockerfile",
1808+
"DockerContext": "context",
1809+
"DockerTag": "Tag",
1810+
"DockerBuildExtraParams": ["--build-arg", 42],
1811+
}
1812+
with self.assertRaises(DockerBuildFailed):
1813+
self.builder._build_lambda_image("Name", metadata, X86_64)
1814+
17951815
def test_build_lambda_image_uses_latest_tag_when_not_specified(self):
17961816
metadata = {
17971817
"Dockerfile": "Dockerfile",

0 commit comments

Comments
 (0)