Browse Source

Merge pull request #93 from github/better-sorted-error-msg

Improved/actionable keys out of order error message
pull/99/head
Ross McFarland 9 years ago
committed by GitHub
parent
commit
c487954d14
2 changed files with 9 additions and 5 deletions
  1. +7
    -3
      octodns/yaml.py
  2. +2
    -2
      tests/test_octodns_yaml.py

+ 7
- 3
octodns/yaml.py View File

@ -21,9 +21,13 @@ class SortEnforcingLoader(SafeLoader):
self.flatten_mapping(node) self.flatten_mapping(node)
ret = self.construct_pairs(node) ret = self.construct_pairs(node)
keys = [d[0] for d in ret] keys = [d[0] for d in ret]
if keys != sorted(keys, key=_natsort_key):
raise ConstructorError(None, None, "keys out of order: {}"
.format(', '.join(keys)), node.start_mark)
keys_sorted = sorted(keys, key=_natsort_key)
for key in keys:
expected = keys_sorted.pop(0)
if key != expected:
raise ConstructorError(None, None, 'keys out of order: '
'expected {} got {} at {}'
.format(expected, key, node.start_mark))
return dict(ret) return dict(ret)


+ 2
- 2
tests/test_octodns_yaml.py View File

@ -48,8 +48,8 @@ class TestYaml(TestCase):
'*.11.2': 'd' '*.11.2': 'd'
'*.10.1': 'c' '*.10.1': 'c'
''') ''')
self.assertEquals('keys out of order: *.2.2, *.1.2, *.11.2, *.10.1',
ctx.exception.problem)
self.assertTrue('keys out of order: expected *.1.2 got *.2.2 at' in
ctx.exception.problem)
buf = StringIO() buf = StringIO()
safe_dump({ safe_dump({


Loading…
Cancel
Save