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': {} } -- 2.4.3