Skip to content

Copy sys.argv in prepare_cmd_args to avoid stacking endpoint flags - #100

Open
Qrytics wants to merge 1 commit into
localstack:masterfrom
Qrytics:pilot/slot-184-fix
Open

Qrytics wants to merge 1 commit into
localstack:masterfrom
Qrytics:pilot/slot-184-fix

Conversation

@Qrytics

@Qrytics Qrytics commented Nov 10, 2026

Copy link
Copy Markdown

What

prepare_cmd_args() in bin/awslocal aliased the live sys.argv list (cmd_args = sys.argv) and then insert()ed --endpoint-url into it. Every call mutated the process's real argv, so a second call stacked a duplicate --endpoint-url flag (and run_as_separate_process's later cmd_args[0] = 'aws' rewrite also leaked into sys.argv).

Fix

Work on a copy — cmd_args = list(sys.argv) — so the inserts/rewrites never touch sys.argv. Single-call behavior is identical; repeated calls are now stable.

Tests

New tests/test_awslocal_prepare_cmd_args.py (loads bin/awslocal via SourceFileLoader with a stubbed localstack_client):

  • test_prepare_cmd_args_inserts_endpoint_once — passes before and after.
  • test_prepare_cmd_args_is_repeatable — fails before (second call returns two --endpoint-url flags), passes after; also asserts sys.argv itself stays clean.
python -m pytest tests/test_awslocal_prepare_cmd_args.py -q
2 passed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant