mirror of https://github.com/xemu-project/xemu.git
tests/qapi-schema: Hide OrderedDict in test output
Since commit 5d83b9a130
"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 <armbru@redhat.com>
Message-Id: <20210831123809.1107782-11-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
parent
555dd1aaa6
commit
9c629fa834
|
@ -18,7 +18,7 @@ enum Enum
|
||||||
feature enum-feat
|
feature enum-feat
|
||||||
object Base
|
object Base
|
||||||
member base1: Enum optional=False
|
member base1: Enum optional=False
|
||||||
if OrderedDict([('all', ['IFALL1', 'IFALL2'])])
|
if {'all': ['IFALL1', 'IFALL2']}
|
||||||
object Variant1
|
object Variant1
|
||||||
member var1: str optional=False
|
member var1: str optional=False
|
||||||
if IFSTR
|
if IFSTR
|
||||||
|
@ -30,7 +30,7 @@ object Object
|
||||||
tag base1
|
tag base1
|
||||||
case one: Variant1
|
case one: Variant1
|
||||||
case two: Variant2
|
case two: Variant2
|
||||||
if OrderedDict([('any', ['IFONE', 'IFTWO'])])
|
if {'any': ['IFONE', 'IFTWO']}
|
||||||
feature union-feat1
|
feature union-feat1
|
||||||
object q_obj_Variant1-wrapper
|
object q_obj_Variant1-wrapper
|
||||||
member data: Variant1 optional=False
|
member data: Variant1 optional=False
|
||||||
|
@ -51,7 +51,7 @@ alternate Alternate
|
||||||
tag type
|
tag type
|
||||||
case i: int
|
case i: int
|
||||||
case b: bool
|
case b: bool
|
||||||
if OrderedDict([('not', OrderedDict([('any', ['IFONE', 'IFTWO'])]))])
|
if {'not': {'any': ['IFONE', 'IFTWO']}}
|
||||||
feature alt-feat
|
feature alt-feat
|
||||||
object q_obj_cmd-arg
|
object q_obj_cmd-arg
|
||||||
member arg1: int optional=False
|
member arg1: int optional=False
|
||||||
|
|
|
@ -311,40 +311,40 @@ enum TestIfUnionKind
|
||||||
member foo
|
member foo
|
||||||
member bar
|
member bar
|
||||||
if TEST_IF_UNION_BAR
|
if TEST_IF_UNION_BAR
|
||||||
if OrderedDict([('all', ['TEST_IF_UNION', 'TEST_IF_STRUCT'])])
|
if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
|
||||||
object TestIfUnion
|
object TestIfUnion
|
||||||
member type: TestIfUnionKind optional=False
|
member type: TestIfUnionKind optional=False
|
||||||
tag type
|
tag type
|
||||||
case foo: q_obj_TestStruct-wrapper
|
case foo: q_obj_TestStruct-wrapper
|
||||||
case bar: q_obj_str-wrapper
|
case bar: q_obj_str-wrapper
|
||||||
if TEST_IF_UNION_BAR
|
if TEST_IF_UNION_BAR
|
||||||
if OrderedDict([('all', ['TEST_IF_UNION', 'TEST_IF_STRUCT'])])
|
if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
|
||||||
object q_obj_test-if-union-cmd-arg
|
object q_obj_test-if-union-cmd-arg
|
||||||
member union-cmd-arg: TestIfUnion optional=False
|
member union-cmd-arg: TestIfUnion optional=False
|
||||||
if OrderedDict([('all', ['TEST_IF_UNION', 'TEST_IF_STRUCT'])])
|
if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
|
||||||
command test-if-union-cmd q_obj_test-if-union-cmd-arg -> None
|
command test-if-union-cmd q_obj_test-if-union-cmd-arg -> None
|
||||||
gen=True success_response=True boxed=False oob=False preconfig=False
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
||||||
if OrderedDict([('all', ['TEST_IF_UNION', 'TEST_IF_STRUCT'])])
|
if {'all': ['TEST_IF_UNION', 'TEST_IF_STRUCT']}
|
||||||
alternate TestIfAlternate
|
alternate TestIfAlternate
|
||||||
tag type
|
tag type
|
||||||
case foo: int
|
case foo: int
|
||||||
case bar: TestStruct
|
case bar: TestStruct
|
||||||
if TEST_IF_ALT_BAR
|
if TEST_IF_ALT_BAR
|
||||||
if OrderedDict([('all', ['TEST_IF_ALT', 'TEST_IF_STRUCT'])])
|
if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
|
||||||
object q_obj_test-if-alternate-cmd-arg
|
object q_obj_test-if-alternate-cmd-arg
|
||||||
member alt-cmd-arg: TestIfAlternate optional=False
|
member alt-cmd-arg: TestIfAlternate optional=False
|
||||||
if OrderedDict([('all', ['TEST_IF_ALT', 'TEST_IF_STRUCT'])])
|
if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
|
||||||
command test-if-alternate-cmd q_obj_test-if-alternate-cmd-arg -> None
|
command test-if-alternate-cmd q_obj_test-if-alternate-cmd-arg -> None
|
||||||
gen=True success_response=True boxed=False oob=False preconfig=False
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
||||||
if OrderedDict([('all', ['TEST_IF_ALT', 'TEST_IF_STRUCT'])])
|
if {'all': ['TEST_IF_ALT', 'TEST_IF_STRUCT']}
|
||||||
object q_obj_test-if-cmd-arg
|
object q_obj_test-if-cmd-arg
|
||||||
member foo: TestIfStruct optional=False
|
member foo: TestIfStruct optional=False
|
||||||
member bar: TestIfEnum optional=False
|
member bar: TestIfEnum optional=False
|
||||||
if TEST_IF_CMD_BAR
|
if TEST_IF_CMD_BAR
|
||||||
if OrderedDict([('all', ['TEST_IF_CMD', 'TEST_IF_STRUCT'])])
|
if {'all': ['TEST_IF_CMD', 'TEST_IF_STRUCT']}
|
||||||
command test-if-cmd q_obj_test-if-cmd-arg -> UserDefThree
|
command test-if-cmd q_obj_test-if-cmd-arg -> UserDefThree
|
||||||
gen=True success_response=True boxed=False oob=False preconfig=False
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
||||||
if OrderedDict([('all', ['TEST_IF_CMD', 'TEST_IF_STRUCT'])])
|
if {'all': ['TEST_IF_CMD', 'TEST_IF_STRUCT']}
|
||||||
command test-cmd-return-def-three None -> UserDefThree
|
command test-cmd-return-def-three None -> UserDefThree
|
||||||
gen=True success_response=True boxed=False oob=False preconfig=False
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
||||||
array TestIfEnumList TestIfEnum
|
array TestIfEnumList TestIfEnum
|
||||||
|
@ -353,13 +353,13 @@ object q_obj_TEST_IF_EVENT-arg
|
||||||
member foo: TestIfStruct optional=False
|
member foo: TestIfStruct optional=False
|
||||||
member bar: TestIfEnumList optional=False
|
member bar: TestIfEnumList optional=False
|
||||||
if TEST_IF_EVT_BAR
|
if TEST_IF_EVT_BAR
|
||||||
if OrderedDict([('all', ['TEST_IF_EVT', 'TEST_IF_STRUCT'])])
|
if {'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT']}
|
||||||
event TEST_IF_EVENT q_obj_TEST_IF_EVENT-arg
|
event TEST_IF_EVENT q_obj_TEST_IF_EVENT-arg
|
||||||
boxed=False
|
boxed=False
|
||||||
if OrderedDict([('all', ['TEST_IF_EVT', 'TEST_IF_STRUCT'])])
|
if {'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT']}
|
||||||
event TEST_IF_EVENT2 None
|
event TEST_IF_EVENT2 None
|
||||||
boxed=False
|
boxed=False
|
||||||
if OrderedDict([('not', OrderedDict([('any', [OrderedDict([('not', 'TEST_IF_EVT')]), OrderedDict([('not', 'TEST_IF_STRUCT')])])]))])
|
if {'not': {'any': [{'not': 'TEST_IF_EVT'}, {'not': 'TEST_IF_STRUCT'}]}}
|
||||||
object FeatureStruct0
|
object FeatureStruct0
|
||||||
member foo: int optional=False
|
member foo: int optional=False
|
||||||
object FeatureStruct1
|
object FeatureStruct1
|
||||||
|
@ -392,11 +392,11 @@ object CondFeatureStruct2
|
||||||
object CondFeatureStruct3
|
object CondFeatureStruct3
|
||||||
member foo: int optional=False
|
member foo: int optional=False
|
||||||
feature feature1
|
feature feature1
|
||||||
if OrderedDict([('all', ['TEST_IF_COND_1', 'TEST_IF_COND_2'])])
|
if {'all': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
|
||||||
object CondFeatureStruct4
|
object CondFeatureStruct4
|
||||||
member foo: int optional=False
|
member foo: int optional=False
|
||||||
feature feature1
|
feature feature1
|
||||||
if OrderedDict([('any', ['TEST_IF_COND_1', 'TEST_IF_COND_2'])])
|
if {'any': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
|
||||||
enum FeatureEnum1
|
enum FeatureEnum1
|
||||||
member eins
|
member eins
|
||||||
member zwei
|
member zwei
|
||||||
|
@ -447,7 +447,7 @@ command test-command-cond-features2 None -> None
|
||||||
command test-command-cond-features3 None -> None
|
command test-command-cond-features3 None -> None
|
||||||
gen=True success_response=True boxed=False oob=False preconfig=False
|
gen=True success_response=True boxed=False oob=False preconfig=False
|
||||||
feature feature1
|
feature feature1
|
||||||
if OrderedDict([('all', ['TEST_IF_COND_1', 'TEST_IF_COND_2'])])
|
if {'all': ['TEST_IF_COND_1', 'TEST_IF_COND_2']}
|
||||||
event TEST_EVENT_FEATURES0 FeatureStruct1
|
event TEST_EVENT_FEATURES0 FeatureStruct1
|
||||||
boxed=False
|
boxed=False
|
||||||
event TEST_EVENT_FEATURES1 None
|
event TEST_EVENT_FEATURES1 None
|
||||||
|
|
|
@ -94,8 +94,17 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _print_if(ifcond, indent=4):
|
def _print_if(ifcond, indent=4):
|
||||||
|
# TODO Drop this hack after replacing OrderedDict by plain
|
||||||
|
# dict (requires Python 3.7)
|
||||||
|
def _massage(subcond):
|
||||||
|
if isinstance(subcond, str):
|
||||||
|
return subcond
|
||||||
|
if isinstance(subcond, list):
|
||||||
|
return [_massage(val) for val in subcond]
|
||||||
|
return {key: _massage(val) for key, val in subcond.items()}
|
||||||
|
|
||||||
if ifcond.is_present():
|
if ifcond.is_present():
|
||||||
print('%sif %s' % (' ' * indent, ifcond.ifcond))
|
print('%sif %s' % (' ' * indent, _massage(ifcond.ifcond)))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _print_features(cls, features, indent=4):
|
def _print_features(cls, features, indent=4):
|
||||||
|
|
Loading…
Reference in New Issue