From 53d010a72c76bf2b7d9b15ed0da02422cddecbab Mon Sep 17 00:00:00 2001 From: "Wang, Shu" Date: Wed, 21 Sep 2022 08:32:07 +0800 Subject: [PATCH] Fix map shorthand docs issue, struct in a map should be wrapped in curly braces --- awscli/argprocess.py | 6 +++++- tests/unit/test_argprocess.py | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/awscli/argprocess.py b/awscli/argprocess.py index 5cd418ce2606..a7a3ce6a295a 100644 --- a/awscli/argprocess.py +++ b/awscli/argprocess.py @@ -503,7 +503,11 @@ def _list_docs(self, argument_model, stack): def _map_docs(self, argument_model, stack): k = argument_model.key - value_docs = self._shorthand_docs(argument_model.value, stack) + stack.append(argument_model.key) + try: + value_docs = self._shorthand_docs(argument_model.value, stack) + finally: + stack.pop() start = 'KeyName1=%s,KeyName2=%s' % (value_docs, value_docs) if k.enum and not stack: start += '\n\nWhere valid key names are:\n' diff --git a/tests/unit/test_argprocess.py b/tests/unit/test_argprocess.py index e59eb6c3b64c..6ebd7949a6e2 100644 --- a/tests/unit/test_argprocess.py +++ b/tests/unit/test_argprocess.py @@ -556,6 +556,14 @@ def test_gen_map_type_docs(self): ) self.assert_generated_example_contains(argument, expected_example_str) + def test_gen_struct_in_map_type_docs(self): + argument = self.get_param_model('sns.Publish.MessageAttributes') + expected_example_str = ( + 'KeyName1={DataType=string,StringValue=string,BinaryValue=blob},' + 'KeyName2={DataType=string,StringValue=string,BinaryValue=blob}' + ) + self.assert_generated_example_contains(argument, expected_example_str) + def test_gen_list_scalar_docs(self): self.service_name = 'elb' self.service_id = 'elastic-load-balancing'