Skip to content

Commit 9c629fa

Browse files
author
Markus Armbruster
committed
tests/qapi-schema: Hide OrderedDict in test output
Since commit 5d83b9a "qapi: replace if condition list with dict {'all': [...]}", we represent if conditionals as trees consisting of OrderedDict, list and str. This results in less than legible test output. For instance: if OrderedDict([('not', OrderedDict([('any', [OrderedDict([('not', 'TEST_IF_EVT')]), OrderedDict([('not', 'TEST_IF_STRUCT')])])]))]) We intend to replace OrderedDict by dict when we get Python 3.7, which will result in more legible output: if {'not': {'any': [{'not': 'TEST_IF_EVT'}, {'not': 'TEST_IF_STRUCT'}]}} Can't wait: put in a hack to get that now, with a comment to revert it when we replace OrderedDict. Signed-off-by: Markus Armbruster <[email protected]> Message-Id: <[email protected]> Reviewed-by: Marc-André Lureau <[email protected]>
1 parent 555dd1a commit 9c629fa

File tree

3 files changed

+28
-19
lines changed

3 files changed

+28
-19
lines changed

tests/qapi-schema/doc-good.out

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ enum Enum
1818
feature enum-feat
1919
object Base
2020
member base1: Enum optional=False
21-
if OrderedDict([('all', ['IFALL1', 'IFALL2'])])
21+
if {'all': ['IFALL1', 'IFALL2']}
2222
object Variant1
2323
member var1: str optional=False
2424
if IFSTR
@@ -30,7 +30,7 @@ object Object
3030
tag base1
3131
case one: Variant1
3232
case two: Variant2
33-
if OrderedDict([('any', ['IFONE', 'IFTWO'])])
33+
if {'any': ['IFONE', 'IFTWO']}
3434
feature union-feat1
3535
object q_obj_Variant1-wrapper
3636
member data: Variant1 optional=False
@@ -51,7 +51,7 @@ alternate Alternate
5151
tag type
5252
case i: int
5353
case b: bool
54-
if OrderedDict([('not', OrderedDict([('any', ['IFONE', 'IFTWO'])]))])
54+
if {'not': {'any': ['IFONE', 'IFTWO']}}
5555
feature alt-feat
5656
object q_obj_cmd-arg
5757
member arg1: int optional=False

tests/qapi-schema/qapi-schema-test.out

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -311,40 +311,40 @@ enum TestIfUnionKind
311311
member foo
312312
member bar
313313
if TEST_IF_UNION_BAR
314-
if OrderedDict([('all', ['TEST_IF_UNION', 'TEST_IF_STRUCT'])])
314+
if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
315315
object TestIfUnion
316316
member type: TestIfUnionKind optional=False
317317
tag type
318318
case foo: q_obj_TestStruct-wrapper
319319
case bar: q_obj_str-wrapper
320320
if TEST_IF_UNION_BAR
321-
if OrderedDict([('all', ['TEST_IF_UNION', 'TEST_IF_STRUCT'])])
321+
if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
322322
object q_obj_test-if-union-cmd-arg
323323
member union-cmd-arg: TestIfUnion optional=False
324-
if OrderedDict([('all', ['TEST_IF_UNION', 'TEST_IF_STRUCT'])])
324+
if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
325325
command test-if-union-cmd q_obj_test-if-union-cmd-arg -> None
326326
gen=True success_response=True boxed=False oob=False preconfig=False
327-
if OrderedDict([('all', ['TEST_IF_UNION', 'TEST_IF_STRUCT'])])
327+
if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
328328
alternate TestIfAlternate
329329
tag type
330330
case foo: int
331331
case bar: TestStruct
332332
if TEST_IF_ALT_BAR
333-
if OrderedDict([('all', ['TEST_IF_ALT', 'TEST_IF_STRUCT'])])
333+
if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
334334
object q_obj_test-if-alternate-cmd-arg
335335
member alt-cmd-arg: TestIfAlternate optional=False
336-
if OrderedDict([('all', ['TEST_IF_ALT', 'TEST_IF_STRUCT'])])
336+
if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
337337
command test-if-alternate-cmd q_obj_test-if-alternate-cmd-arg -> None
338338
gen=True success_response=True boxed=False oob=False preconfig=False
339-
if OrderedDict([('all', ['TEST_IF_ALT', 'TEST_IF_STRUCT'])])
339+
if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
340340
object q_obj_test-if-cmd-arg
341341
member foo: TestIfStruct optional=False
342342
member bar: TestIfEnum optional=False
343343
if TEST_IF_CMD_BAR
344-
if OrderedDict([('all', ['TEST_IF_CMD', 'TEST_IF_STRUCT'])])
344+
if {'all': ['TEST_IF_CMD', 'TEST_IF_STRUCT']}
345345
command test-if-cmd q_obj_test-if-cmd-arg -> UserDefThree
346346
gen=True success_response=True boxed=False oob=False preconfig=False
347-
if OrderedDict([('all', ['TEST_IF_CMD', 'TEST_IF_STRUCT'])])
347+
if {'all': ['TEST_IF_CMD', 'TEST_IF_STRUCT']}
348348
command test-cmd-return-def-three None -> UserDefThree
349349
gen=True success_response=True boxed=False oob=False preconfig=False
350350
array TestIfEnumList TestIfEnum
@@ -353,13 +353,13 @@ object q_obj_TEST_IF_EVENT-arg
353353
member foo: TestIfStruct optional=False
354354
member bar: TestIfEnumList optional=False
355355
if TEST_IF_EVT_BAR
356-
if OrderedDict([('all', ['TEST_IF_EVT', 'TEST_IF_STRUCT'])])
356+
if {'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT']}
357357
event TEST_IF_EVENT q_obj_TEST_IF_EVENT-arg
358358
boxed=False
359-
if OrderedDict([('all', ['TEST_IF_EVT', 'TEST_IF_STRUCT'])])
359+
if {'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT']}
360360
event TEST_IF_EVENT2 None
361361
boxed=False
362-
if OrderedDict([('not', OrderedDict([('any', [OrderedDict([('not', 'TEST_IF_EVT')]), OrderedDict([('not', 'TEST_IF_STRUCT')])])]))])
362+
if {'not': {'any': [{'not': 'TEST_IF_EVT'}, {'not': 'TEST_IF_STRUCT'}]}}
363363
object FeatureStruct0
364364
member foo: int optional=False
365365
object FeatureStruct1
@@ -392,11 +392,11 @@ object CondFeatureStruct2
392392
object CondFeatureStruct3
393393
member foo: int optional=False
394394
feature feature1
395-
if OrderedDict([('all', ['TEST_IF_COND_1', 'TEST_IF_COND_2'])])
395+
if {'all': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
396396
object CondFeatureStruct4
397397
member foo: int optional=False
398398
feature feature1
399-
if OrderedDict([('any', ['TEST_IF_COND_1', 'TEST_IF_COND_2'])])
399+
if {'any': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
400400
enum FeatureEnum1
401401
member eins
402402
member zwei
@@ -447,7 +447,7 @@ command test-command-cond-features2 None -> None
447447
command test-command-cond-features3 None -> None
448448
gen=True success_response=True boxed=False oob=False preconfig=False
449449
feature feature1
450-
if OrderedDict([('all', ['TEST_IF_COND_1', 'TEST_IF_COND_2'])])
450+
if {'all': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
451451
event TEST_EVENT_FEATURES0 FeatureStruct1
452452
boxed=False
453453
event TEST_EVENT_FEATURES1 None

tests/qapi-schema/test-qapi.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,17 @@ def _print_variants(variants):
9494

9595
@staticmethod
9696
def _print_if(ifcond, indent=4):
97+
# TODO Drop this hack after replacing OrderedDict by plain
98+
# dict (requires Python 3.7)
99+
def _massage(subcond):
100+
if isinstance(subcond, str):
101+
return subcond
102+
if isinstance(subcond, list):
103+
return [_massage(val) for val in subcond]
104+
return {key: _massage(val) for key, val in subcond.items()}
105+
97106
if ifcond.is_present():
98-
print('%sif %s' % (' ' * indent, ifcond.ifcond))
107+
print('%sif %s' % (' ' * indent, _massage(ifcond.ifcond)))
99108

100109
@classmethod
101110
def _print_features(cls, features, indent=4):

0 commit comments

Comments
 (0)