Do not sort dictionaries in assert_deepequal utility function

Sorting lists of dictionaries in assert_deepequal was causing inconsistencies
in unit test execution. To fix this, do not sort lists if their elements are
dictionaries.

https://fedorahosted.org/freeipa/ticket/3562
This commit is contained in:
Ana Krivokapic
2013-04-15 15:15:02 +02:00
committed by Martin Kosek
parent 4f47ac9d7f
commit 18149fadb6
2 changed files with 13 additions and 8 deletions

View File

@@ -464,12 +464,6 @@ class test_netgroup(Declarative):
truncated=False, truncated=False,
summary=u'2 netgroups matched', summary=u'2 netgroups matched',
result=[ result=[
{
'dn': fuzzy_netgroupdn,
'cn': [netgroup2],
'description': [u'Test netgroup 2'],
'nisdomainname': [u'%s' % api.env.domain],
},
{ {
'dn': fuzzy_netgroupdn, 'dn': fuzzy_netgroupdn,
'memberhost_host': (host1,), 'memberhost_host': (host1,),
@@ -478,6 +472,12 @@ class test_netgroup(Declarative):
'description': [u'Test netgroup 1'], 'description': [u'Test netgroup 1'],
'nisdomainname': [u'%s' % api.env.domain], 'nisdomainname': [u'%s' % api.env.domain],
}, },
{
'dn': fuzzy_netgroupdn,
'cn': [netgroup2],
'description': [u'Test netgroup 2'],
'nisdomainname': [u'%s' % api.env.domain],
},
], ],
), ),
), ),

View File

@@ -316,8 +316,13 @@ def assert_deepequal(expected, got, doc='', stack=tuple()):
raise AssertionError( raise AssertionError(
LEN % (doc, len(expected), len(got), expected, got, stack) LEN % (doc, len(expected), len(got), expected, got, stack)
) )
s_got = sorted(got) # Sort list elements, unless they are dictionaries
s_expected = sorted(expected) if expected and isinstance(expected[0], dict):
s_got = got
s_expected = expected
else:
s_got = sorted(got)
s_expected = sorted(expected)
for (i, e_sub) in enumerate(s_expected): for (i, e_sub) in enumerate(s_expected):
g_sub = s_got[i] g_sub = s_got[i]
assert_deepequal(e_sub, g_sub, doc, stack + (i,)) assert_deepequal(e_sub, g_sub, doc, stack + (i,))