Eric Blake <ebl...@redhat.com> writes: > Use of '"...%s" % include' to print non-strings can lead to > ugly messages, such as this (if the .json change is applied > without the qapi.py change): > Expected a file name (string), got: OrderedDict() > > Better is to just omit the actual non-string value in the > message. > > Signed-off-by: Eric Blake <ebl...@redhat.com> > --- > scripts/qapi.py | 4 ++-- > tests/qapi-schema/include-non-file.err | 2 +- > tests/qapi-schema/include-non-file.json | 2 +- > 3 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/scripts/qapi.py b/scripts/qapi.py > index 31c4bcc..007349e 100644 > --- a/scripts/qapi.py > +++ b/scripts/qapi.py > @@ -138,8 +138,8 @@ class QAPISchemaParser(object): > "Invalid 'include' directive") > include = expr["include"] > if not isinstance(include, str): > - raise QAPIExprError(expr_info, 'Expected a file name ' > - '(string), got: %s' % include) > + raise QAPIExprError(expr_info, > + "Expected a string for 'include'") > incl_abs_fname = os.path.join(os.path.dirname(abs_fname), > include) > # catch inclusion cycle > diff --git a/tests/qapi-schema/include-non-file.err > b/tests/qapi-schema/include-non-file.err > index 9658c78..079120b 100644 > --- a/tests/qapi-schema/include-non-file.err > +++ b/tests/qapi-schema/include-non-file.err > @@ -1 +1 @@ > -tests/qapi-schema/include-non-file.json:1: Expected a file name (string), > got: ['foo', 'bar'] > +tests/qapi-schema/include-non-file.json:1: Expected a string for 'include' > diff --git a/tests/qapi-schema/include-non-file.json > b/tests/qapi-schema/include-non-file.json > index cd43c3f..4711aa4 100644 > --- a/tests/qapi-schema/include-non-file.json > +++ b/tests/qapi-schema/include-non-file.json > @@ -1 +1 @@ > -{ 'include': [ 'foo', 'bar' ] } > +{ 'include': {} }
What about "Value of 'include' must be a string'?