diff --git a/tests/rules/test_key_duplicates.py b/tests/rules/test_key_duplicates.py index b325bf6..57a80b8 100644 --- a/tests/rules/test_key_duplicates.py +++ b/tests/rules/test_key_duplicates.py @@ -87,6 +87,10 @@ class KeyDuplicatesTestCase(RuleTestCase): 'anchor_reference:\n' ' <<: *anchor_one\n' ' <<: *anchor_two\n', conf) + self.check('---\n' + '{a:1, b:2}}\n', conf, problem=(2, 11, 'syntax')) + self.check('---\n' + '[a, b, c]]\n', conf, problem=(2, 10, 'syntax')) def test_enabled(self): conf = 'key-duplicates: enable' @@ -165,6 +169,10 @@ class KeyDuplicatesTestCase(RuleTestCase): 'anchor_reference:\n' ' <<: *anchor_one\n' ' <<: *anchor_two\n', conf) + self.check('---\n' + '{a:1, b:2}}\n', conf, problem=(2, 11, 'syntax')) + self.check('---\n' + '[a, b, c]]\n', conf, problem=(2, 10, 'syntax')) def test_key_tokens_in_flow_sequences(self): conf = 'key-duplicates: enable' diff --git a/yamllint/rules/key_duplicates.py b/yamllint/rules/key_duplicates.py index bd38b14..af294c9 100644 --- a/yamllint/rules/key_duplicates.py +++ b/yamllint/rules/key_duplicates.py @@ -84,7 +84,8 @@ def check(conf, token, prev, next, nextnext, context): elif isinstance(token, (yaml.BlockEndToken, yaml.FlowMappingEndToken, yaml.FlowSequenceEndToken)): - context['stack'].pop() + if len(context['stack']) > 0: + context['stack'].pop() elif (isinstance(token, yaml.KeyToken) and isinstance(next, yaml.ScalarToken)): # This check is done because KeyTokens can be found inside flow