Message ID | 20210325060356.4040114-9-jsnow@redhat.com |
---|---|
State | New |
Headers | show |
Series | qapi: static typing conversion, pt3 | expand |
John Snow <jsnow@redhat.com> writes: > It needs to be an object (dict), not anything else. > > Signed-off-by: John Snow <jsnow@redhat.com> > > --- > > Note: this actually doesn't ... work, but on-list, we discussed wanting > tests first, then the fix. That can't happen here, because QAPI crashes > at runtime. So uh, just squash this into the following patch, I guess? Yes. > I tried. Thanks! > Signed-off-by: John Snow <jsnow@redhat.com> > --- > tests/qapi-schema/alternate-invalid-data-type.err | 0 > tests/qapi-schema/alternate-invalid-data-type.json | 4 ++++ > tests/qapi-schema/alternate-invalid-data-type.out | 0 > tests/qapi-schema/meson.build | 2 ++ > tests/qapi-schema/union-invalid-data-type.err | 0 > tests/qapi-schema/union-invalid-data-type.json | 13 +++++++++++++ > tests/qapi-schema/union-invalid-data-type.out | 0 > 7 files changed, 19 insertions(+) > create mode 100644 tests/qapi-schema/alternate-invalid-data-type.err > create mode 100644 tests/qapi-schema/alternate-invalid-data-type.json > create mode 100644 tests/qapi-schema/alternate-invalid-data-type.out > create mode 100644 tests/qapi-schema/union-invalid-data-type.err > create mode 100644 tests/qapi-schema/union-invalid-data-type.json > create mode 100644 tests/qapi-schema/union-invalid-data-type.out > > diff --git a/tests/qapi-schema/alternate-invalid-data-type.err b/tests/qapi-schema/alternate-invalid-data-type.err > new file mode 100644 > index 0000000000..e69de29bb2 > diff --git a/tests/qapi-schema/alternate-invalid-data-type.json b/tests/qapi-schema/alternate-invalid-data-type.json > new file mode 100644 > index 0000000000..7d5d905581 > --- /dev/null > +++ b/tests/qapi-schema/alternate-invalid-data-type.json > @@ -0,0 +1,4 @@ > +# Alternate type requires an object for 'data' > +{ 'alternate': 'Alt', > + 'data': ['rubbish', 'nonsense'] > +} Let's name it alternate-data-invalid.json, for consistency with struct-data-invalid.json > diff --git a/tests/qapi-schema/alternate-invalid-data-type.out b/tests/qapi-schema/alternate-invalid-data-type.out > new file mode 100644 > index 0000000000..e69de29bb2 > diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build > index 8ba6917132..cc5b136cfb 100644 > --- a/tests/qapi-schema/meson.build > +++ b/tests/qapi-schema/meson.build > @@ -15,6 +15,7 @@ schemas = [ > 'alternate-conflict-bool-string.json', > 'alternate-conflict-num-string.json', > 'alternate-empty.json', > + 'alternate-invalid-data-type.json', > 'alternate-invalid-dict.json', > 'alternate-nested.json', > 'alternate-unknown.json', > @@ -192,6 +193,7 @@ schemas = [ > 'union-clash-branches.json', > 'union-empty.json', > 'union-invalid-base.json', > + 'union-invalid-data-type.json', > 'union-optional-branch.json', > 'union-unknown.json', > 'unknown-escape.json', > diff --git a/tests/qapi-schema/union-invalid-data-type.err b/tests/qapi-schema/union-invalid-data-type.err > new file mode 100644 > index 0000000000..e69de29bb2 > diff --git a/tests/qapi-schema/union-invalid-data-type.json b/tests/qapi-schema/union-invalid-data-type.json > new file mode 100644 > index 0000000000..5a32d267bf > --- /dev/null > +++ b/tests/qapi-schema/union-invalid-data-type.json > @@ -0,0 +1,13 @@ > +# the union data type must be an object. > + > +{ 'struct': 'TestTypeA', > + 'data': { 'string': 'str' } } > + > +{ 'struct': 'TestTypeB', > + 'data': { 'integer': 'int' } } These two seem superfluous. > + > +{ 'union': 'TestUnion', > + 'base': 'int', > + 'discriminator': 'int', > + 'data': ['TestTypeA', 'TestTypeB'] > +} Name it union-invalid-data.json. > diff --git a/tests/qapi-schema/union-invalid-data-type.out b/tests/qapi-schema/union-invalid-data-type.out > new file mode 100644 > index 0000000000..e69de29bb2
diff --git a/tests/qapi-schema/alternate-invalid-data-type.err b/tests/qapi-schema/alternate-invalid-data-type.err new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/qapi-schema/alternate-invalid-data-type.json b/tests/qapi-schema/alternate-invalid-data-type.json new file mode 100644 index 0000000000..7d5d905581 --- /dev/null +++ b/tests/qapi-schema/alternate-invalid-data-type.json @@ -0,0 +1,4 @@ +# Alternate type requires an object for 'data' +{ 'alternate': 'Alt', + 'data': ['rubbish', 'nonsense'] +} diff --git a/tests/qapi-schema/alternate-invalid-data-type.out b/tests/qapi-schema/alternate-invalid-data-type.out new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build index 8ba6917132..cc5b136cfb 100644 --- a/tests/qapi-schema/meson.build +++ b/tests/qapi-schema/meson.build @@ -15,6 +15,7 @@ schemas = [ 'alternate-conflict-bool-string.json', 'alternate-conflict-num-string.json', 'alternate-empty.json', + 'alternate-invalid-data-type.json', 'alternate-invalid-dict.json', 'alternate-nested.json', 'alternate-unknown.json', @@ -192,6 +193,7 @@ schemas = [ 'union-clash-branches.json', 'union-empty.json', 'union-invalid-base.json', + 'union-invalid-data-type.json', 'union-optional-branch.json', 'union-unknown.json', 'unknown-escape.json', diff --git a/tests/qapi-schema/union-invalid-data-type.err b/tests/qapi-schema/union-invalid-data-type.err new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/qapi-schema/union-invalid-data-type.json b/tests/qapi-schema/union-invalid-data-type.json new file mode 100644 index 0000000000..5a32d267bf --- /dev/null +++ b/tests/qapi-schema/union-invalid-data-type.json @@ -0,0 +1,13 @@ +# the union data type must be an object. + +{ 'struct': 'TestTypeA', + 'data': { 'string': 'str' } } + +{ 'struct': 'TestTypeB', + 'data': { 'integer': 'int' } } + +{ 'union': 'TestUnion', + 'base': 'int', + 'discriminator': 'int', + 'data': ['TestTypeA', 'TestTypeB'] +} diff --git a/tests/qapi-schema/union-invalid-data-type.out b/tests/qapi-schema/union-invalid-data-type.out new file mode 100644 index 0000000000..e69de29bb2