From 7f8a01a81da107fb0babffeaed49ba67372e3bfc Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Tue, 25 Jul 2017 09:15:30 -0700 Subject: [PATCH] Improved/actionable keys out of order error message --- octodns/yaml.py | 10 +++++++--- tests/test_octodns_yaml.py | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/octodns/yaml.py b/octodns/yaml.py index d4ab541..98bafdb 100644 --- a/octodns/yaml.py +++ b/octodns/yaml.py @@ -21,9 +21,13 @@ class SortEnforcingLoader(SafeLoader): self.flatten_mapping(node) ret = self.construct_pairs(node) 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) diff --git a/tests/test_octodns_yaml.py b/tests/test_octodns_yaml.py index 0f454b3..effe231 100644 --- a/tests/test_octodns_yaml.py +++ b/tests/test_octodns_yaml.py @@ -48,8 +48,8 @@ class TestYaml(TestCase): '*.11.2': 'd' '*.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() safe_dump({