Loading tests/qapi-schema/qapi-schema-test.json +39 −0 Original line number Diff line number Diff line Loading @@ -242,3 +242,42 @@ { 'foo': 'TestIfStruct', 'bar': { 'type': ['TestIfEnum'], 'if': 'defined(TEST_IF_EVT_BAR)' } }, 'if': 'defined(TEST_IF_EVT) && defined(TEST_IF_STRUCT)' } # test 'features' for structs { 'struct': 'FeatureStruct0', 'data': { 'foo': 'int' }, 'features': [] } { 'struct': 'FeatureStruct1', 'data': { 'foo': 'int' }, 'features': [ 'feature1' ] } { 'struct': 'FeatureStruct2', 'data': { 'foo': 'int' }, 'features': [ { 'name': 'feature1' } ] } { 'struct': 'FeatureStruct3', 'data': { 'foo': 'int' }, 'features': [ 'feature1', 'feature2' ] } { 'struct': 'FeatureStruct4', 'data': { 'namespace-test': 'int' }, 'features': [ 'namespace-test', 'int', 'name', 'if' ] } { 'struct': 'CondFeatureStruct1', 'data': { 'foo': 'int' }, 'features': [ { 'name': 'feature1', 'if': 'defined(TEST_IF_FEATURE_1)'} ] } { 'struct': 'CondFeatureStruct2', 'data': { 'foo': 'int' }, 'features': [ { 'name': 'feature1', 'if': 'defined(TEST_IF_FEATURE_1)'}, { 'name': 'feature2', 'if': 'defined(TEST_IF_FEATURE_2)'} ] } { 'struct': 'CondFeatureStruct3', 'data': { 'foo': 'int' }, 'features': [ { 'name': 'feature1', 'if': [ 'defined(TEST_IF_COND_1)', 'defined(TEST_IF_COND_2)'] } ] } { 'command': 'test-features', 'data': { 'fs0': 'FeatureStruct0', 'fs1': 'FeatureStruct1', 'fs2': 'FeatureStruct2', 'fs3': 'FeatureStruct3', 'fs4': 'FeatureStruct4', 'cfs1': 'CondFeatureStruct1', 'cfs2': 'CondFeatureStruct2', 'cfs3': 'CondFeatureStruct3' } } tests/qapi-schema/qapi-schema-test.out +43 −0 Original line number Diff line number Diff line Loading @@ -354,3 +354,46 @@ object q_obj_TestIfEvent-arg event TestIfEvent q_obj_TestIfEvent-arg boxed=False if ['defined(TEST_IF_EVT) && defined(TEST_IF_STRUCT)'] object FeatureStruct0 member foo: int optional=False object FeatureStruct1 member foo: int optional=False feature feature1 object FeatureStruct2 member foo: int optional=False feature feature1 object FeatureStruct3 member foo: int optional=False feature feature1 feature feature2 object FeatureStruct4 member namespace-test: int optional=False feature namespace-test feature int feature name feature if object CondFeatureStruct1 member foo: int optional=False feature feature1 if ['defined(TEST_IF_FEATURE_1)'] object CondFeatureStruct2 member foo: int optional=False feature feature1 if ['defined(TEST_IF_FEATURE_1)'] feature feature2 if ['defined(TEST_IF_FEATURE_2)'] object CondFeatureStruct3 member foo: int optional=False feature feature1 if ['defined(TEST_IF_COND_1)', 'defined(TEST_IF_COND_2)'] object q_obj_test-features-arg member fs0: FeatureStruct0 optional=False member fs1: FeatureStruct1 optional=False member fs2: FeatureStruct2 optional=False member fs3: FeatureStruct3 optional=False member fs4: FeatureStruct4 optional=False member cfs1: CondFeatureStruct1 optional=False member cfs2: CondFeatureStruct2 optional=False member cfs3: CondFeatureStruct3 optional=False command test-features q_obj_test-features-arg -> None gen=True success_response=True boxed=False oob=False preconfig=False tests/qapi-schema/test-qapi.py +4 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,10 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor): self._print_if(m.ifcond, 8) self._print_variants(variants) self._print_if(ifcond) if features: for f in features: print(' feature %s' % f.name) self._print_if(f.ifcond, 8) def visit_alternate_type(self, name, info, ifcond, variants): print('alternate %s' % name) Loading tests/test-qmp-cmds.c +8 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,14 @@ void qmp_user_def_cmd1(UserDefOne * ud1, Error **errp) { } void qmp_test_features(FeatureStruct0 *fs0, FeatureStruct1 *fs1, FeatureStruct2 *fs2, FeatureStruct3 *fs3, FeatureStruct4 *fs4, CondFeatureStruct1 *cfs1, CondFeatureStruct2 *cfs2, CondFeatureStruct3 *cfs3, Error **errp) { } UserDefTwo *qmp_user_def_cmd2(UserDefOne *ud1a, bool has_udb1, UserDefOne *ud1b, Error **errp) Loading Loading
tests/qapi-schema/qapi-schema-test.json +39 −0 Original line number Diff line number Diff line Loading @@ -242,3 +242,42 @@ { 'foo': 'TestIfStruct', 'bar': { 'type': ['TestIfEnum'], 'if': 'defined(TEST_IF_EVT_BAR)' } }, 'if': 'defined(TEST_IF_EVT) && defined(TEST_IF_STRUCT)' } # test 'features' for structs { 'struct': 'FeatureStruct0', 'data': { 'foo': 'int' }, 'features': [] } { 'struct': 'FeatureStruct1', 'data': { 'foo': 'int' }, 'features': [ 'feature1' ] } { 'struct': 'FeatureStruct2', 'data': { 'foo': 'int' }, 'features': [ { 'name': 'feature1' } ] } { 'struct': 'FeatureStruct3', 'data': { 'foo': 'int' }, 'features': [ 'feature1', 'feature2' ] } { 'struct': 'FeatureStruct4', 'data': { 'namespace-test': 'int' }, 'features': [ 'namespace-test', 'int', 'name', 'if' ] } { 'struct': 'CondFeatureStruct1', 'data': { 'foo': 'int' }, 'features': [ { 'name': 'feature1', 'if': 'defined(TEST_IF_FEATURE_1)'} ] } { 'struct': 'CondFeatureStruct2', 'data': { 'foo': 'int' }, 'features': [ { 'name': 'feature1', 'if': 'defined(TEST_IF_FEATURE_1)'}, { 'name': 'feature2', 'if': 'defined(TEST_IF_FEATURE_2)'} ] } { 'struct': 'CondFeatureStruct3', 'data': { 'foo': 'int' }, 'features': [ { 'name': 'feature1', 'if': [ 'defined(TEST_IF_COND_1)', 'defined(TEST_IF_COND_2)'] } ] } { 'command': 'test-features', 'data': { 'fs0': 'FeatureStruct0', 'fs1': 'FeatureStruct1', 'fs2': 'FeatureStruct2', 'fs3': 'FeatureStruct3', 'fs4': 'FeatureStruct4', 'cfs1': 'CondFeatureStruct1', 'cfs2': 'CondFeatureStruct2', 'cfs3': 'CondFeatureStruct3' } }
tests/qapi-schema/qapi-schema-test.out +43 −0 Original line number Diff line number Diff line Loading @@ -354,3 +354,46 @@ object q_obj_TestIfEvent-arg event TestIfEvent q_obj_TestIfEvent-arg boxed=False if ['defined(TEST_IF_EVT) && defined(TEST_IF_STRUCT)'] object FeatureStruct0 member foo: int optional=False object FeatureStruct1 member foo: int optional=False feature feature1 object FeatureStruct2 member foo: int optional=False feature feature1 object FeatureStruct3 member foo: int optional=False feature feature1 feature feature2 object FeatureStruct4 member namespace-test: int optional=False feature namespace-test feature int feature name feature if object CondFeatureStruct1 member foo: int optional=False feature feature1 if ['defined(TEST_IF_FEATURE_1)'] object CondFeatureStruct2 member foo: int optional=False feature feature1 if ['defined(TEST_IF_FEATURE_1)'] feature feature2 if ['defined(TEST_IF_FEATURE_2)'] object CondFeatureStruct3 member foo: int optional=False feature feature1 if ['defined(TEST_IF_COND_1)', 'defined(TEST_IF_COND_2)'] object q_obj_test-features-arg member fs0: FeatureStruct0 optional=False member fs1: FeatureStruct1 optional=False member fs2: FeatureStruct2 optional=False member fs3: FeatureStruct3 optional=False member fs4: FeatureStruct4 optional=False member cfs1: CondFeatureStruct1 optional=False member cfs2: CondFeatureStruct2 optional=False member cfs3: CondFeatureStruct3 optional=False command test-features q_obj_test-features-arg -> None gen=True success_response=True boxed=False oob=False preconfig=False
tests/qapi-schema/test-qapi.py +4 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,10 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor): self._print_if(m.ifcond, 8) self._print_variants(variants) self._print_if(ifcond) if features: for f in features: print(' feature %s' % f.name) self._print_if(f.ifcond, 8) def visit_alternate_type(self, name, info, ifcond, variants): print('alternate %s' % name) Loading
tests/test-qmp-cmds.c +8 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,14 @@ void qmp_user_def_cmd1(UserDefOne * ud1, Error **errp) { } void qmp_test_features(FeatureStruct0 *fs0, FeatureStruct1 *fs1, FeatureStruct2 *fs2, FeatureStruct3 *fs3, FeatureStruct4 *fs4, CondFeatureStruct1 *cfs1, CondFeatureStruct2 *cfs2, CondFeatureStruct3 *cfs3, Error **errp) { } UserDefTwo *qmp_user_def_cmd2(UserDefOne *ud1a, bool has_udb1, UserDefOne *ud1b, Error **errp) Loading