qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 0e2052: test-qemu-opts: Cover qemu_opts_parse


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 0e2052: test-qemu-opts: Cover qemu_opts_parse() of "no"
Date: Wed, 08 Mar 2017 02:00:13 -0800

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 0e2052b26067f3c641b2418ef507160f54afcecf
      
https://github.com/qemu/qemu/commit/0e2052b26067f3c641b2418ef507160f54afcecf
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M tests/test-qemu-opts.c

  Log Message:
  -----------
  test-qemu-opts: Cover qemu_opts_parse() of "no"

qemu_opts_parse() interprets "no" as negated empty key.  Consistent
with its acceptance of empty keys elsewhere, whatever that's worth.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: 112c94465520fc50eb8edb4800c4f45ec8bd6a70
      
https://github.com/qemu/qemu/commit/112c94465520fc50eb8edb4800c4f45ec8bd6a70
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M tests/Makefile.include

  Log Message:
  -----------
  tests: Fix gcov-files-test-qemu-opts-y, gcov-files-test-logging-y

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: d454dbe0ee3ca7bee8a0bb185e4be0534b1d1544
      
https://github.com/qemu/qemu/commit/d454dbe0ee3ca7bee8a0bb185e4be0534b1d1544
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M include/qemu/option.h
    M tests/.gitignore
    M tests/Makefile.include
    A tests/test-keyval.c
    M util/Makefile.objs
    A util/keyval.c

  Log Message:
  -----------
  keyval: New keyval_parse()

keyval_parse() parses KEY=VALUE,... into a QDict.  Works like
qemu_opts_parse(), except:

* Returns a QDict instead of a QemuOpts (d'oh).

* Supports nesting, unlike QemuOpts: a KEY is split into key
  fragments at '.' (dotted key convention; the block layer does
  something similar on top of QemuOpts).  The key fragments are QDict
  keys, and the last one's value is updated to VALUE.

* Each key fragment may be up to 127 bytes long.  qemu_opts_parse()
  limits the entire key to 127 bytes.

* Overlong key fragments are rejected.  qemu_opts_parse() silently
  truncates them.

* Empty key fragments are rejected.  qemu_opts_parse() happily
  accepts empty keys.

* It does not store the returned value.  qemu_opts_parse() stores it
  in the QemuOptsList.

* It does not treat parameter "id" specially.  qemu_opts_parse()
  ignores all but the first "id", and fails when its value isn't
  id_wellformed(), or duplicate (a QemuOpts with the same ID is
  already stored).  It also screws up when a value contains ",id=".

* Implied value is not supported.  qemu_opts_parse() desugars "foo" to
  "foo=on", and "nofoo" to "foo=off".

* An implied key's value can't be empty, and can't contain ','.

I intend to grow this into a saner replacement for QemuOpts.  It'll
take time, though.

Note: keyval_parse() provides no way to do lists, and its key syntax
is incompatible with the __RFQDN_ prefix convention for downstream
extensions, because it blindly splits at '.', even in __RFQDN_.  Both
issues will be addressed later in the series.

Signed-off-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>


  Commit: cbd8acf38f37544b830086af840bfb1015ce10e0
      
https://github.com/qemu/qemu/commit/cbd8acf38f37544b830086af840bfb1015ce10e0
  Author: Daniel P. Berrange <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M include/qapi/qobject-input-visitor.h
    M qapi/qobject-input-visitor.c
    M tests/test-qobject-input-visitor.c

  Log Message:
  -----------
  qapi: qobject input visitor variant for use with keyval_parse()

Currently the QObjectInputVisitor assumes that all scalar values are
directly represented as the final types declared by the thing being
visited. i.e. it assumes an 'int' is using QInt, and a 'bool' is using
QBool, etc.  This is good when QObjectInputVisitor is fed a QObject
that came from a JSON document on the QMP monitor, as it will strictly
validate correctness.

To allow QObjectInputVisitor to be reused for visiting a QObject
originating from keyval_parse(), an alternative mode is needed where
all the scalars types are represented as QString and converted on the
fly to the final desired type.

Signed-off-by: Daniel P. Berrange <address@hidden>
Message-Id: <address@hidden>

Rebased, conflicts resolved, commit message updated to refer to
keyval_parse().  autocast replaced by keyval in identifiers,
noautocast replaced by fail in tests.

Fix qobject_input_type_uint64_keyval() not to reject '-', for QemuOpts
compatibility: replace parse_uint_full() by open-coded
parse_option_number().  The next commit will add suitable tests.
Leave out the fancy ERANGE error reporting for now, but add a TODO
comment.  Add it qobject_input_type_int64_keyval() and
qobject_input_type_number_keyval(), too.

Open code parse_option_bool() and parse_option_size() so we have to
call qobject_input_get_name() only when actually needed.  Again, leave
out ERANGE error reporting for now.

QAPI/QMP downstream extension prefixes __RFQDN_ don't work, because
keyval_parse() splits them at '.'.  This will be addressed later in
the series.

qobject_input_type_int64_keyval(), qobject_input_type_uint64_keyval(),
qobject_input_type_number_keyval() tweaked for style.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: 9e3943f8837d0fda55044809798186a8453d582c
      
https://github.com/qemu/qemu/commit/9e3943f8837d0fda55044809798186a8453d582c
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M tests/test-keyval.c

  Log Message:
  -----------
  test-keyval: Cover use with qobject input visitor

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: abe81bc21a6996c62e66ed2d051373c0df24f870
      
https://github.com/qemu/qemu/commit/abe81bc21a6996c62e66ed2d051373c0df24f870
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M qapi/qobject-input-visitor.c

  Log Message:
  -----------
  qapi: Factor out common part of qobject input visitor creation

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: e3934b429760d788458d02bc4cad57d1c6a46ce7
      
https://github.com/qemu/qemu/commit/e3934b429760d788458d02bc4cad57d1c6a46ce7
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M qapi/qobject-input-visitor.c

  Log Message:
  -----------
  qapi: Factor out common qobject_input_get_keyval()

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Message-Id: <address@hidden>


  Commit: 99dbfd1db1110f579f47b40155b9bf750d2cd6ad
      
https://github.com/qemu/qemu/commit/99dbfd1db1110f579f47b40155b9bf750d2cd6ad
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M include/qapi/qmp/qjson.h
    M qobject/qjson.c
    M tests/libqtest.c
    M tests/test-qobject-input-visitor.c

  Log Message:
  -----------
  qobject: Propagate parse errors through qobject_from_jsonv()

The next few commits will put the errors to use where appropriate.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: 53f991520ea866a315ef946deb79e4c92b71fe3d
      
https://github.com/qemu/qemu/commit/53f991520ea866a315ef946deb79e4c92b71fe3d
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M tests/libqtest.c

  Log Message:
  -----------
  libqtest: Fix qmp() & friends to abort on JSON parse errors

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: ea5ef5c80b655456971b00f7ffaad5e26d4c5978
      
https://github.com/qemu/qemu/commit/ea5ef5c80b655456971b00f7ffaad5e26d4c5978
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M qobject/qjson.c

  Log Message:
  -----------
  qjson: Abort earlier on qobject_from_jsonf() misuse

Ignoring errors first, then asserting success is suboptimal.  Pass
&error_abort instead, so we abort earlier, and hopefully get more
useful clues on what's wrong.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: bff17e84a985033a880302394f1a8d74d013f9ef
      
https://github.com/qemu/qemu/commit/bff17e84a985033a880302394f1a8d74d013f9ef
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M tests/test-qobject-input-visitor.c

  Log Message:
  -----------
  test-qobject-input-visitor: Abort earlier on bad test input

visitor_input_test_init_internal() parses test input with
qobject_from_jsonv(), and asserts it succeeds.  Pass &error_abort for
good measure.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: 57348c2f18d2f9f77f4d0ecdc5a83029a933c5d8
      
https://github.com/qemu/qemu/commit/57348c2f18d2f9f77f4d0ecdc5a83029a933c5d8
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M block.c
    M include/qapi/qmp/qjson.h
    M monitor.c
    M qobject/qjson.c
    M tests/check-qjson.c
    M tests/test-visitor-serialization.c

  Log Message:
  -----------
  qobject: Propagate parse errors through qobject_from_json()

The next few commits will put the errors to use where appropriate.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Message-Id: <address@hidden>


  Commit: 5577fff73822c91efd827dde33b8513a5e03ee8d
      
https://github.com/qemu/qemu/commit/5577fff73822c91efd827dde33b8513a5e03ee8d
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: More detailed syntax error reporting for JSON filenames

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: aec4b054ea36c53c8b887da99f20010133b84378
      
https://github.com/qemu/qemu/commit/aec4b054ea36c53c8b887da99f20010133b84378
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M tests/check-qjson.c

  Log Message:
  -----------
  check-qjson: Test errors from qobject_from_json()

Pass &error_abort with known-good input.  Else pass &err and check
what comes back.  This demonstrates that the parser fails silently for
many errors.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: 02146d27c33675d511dd34134536416c7cd774da
      
https://github.com/qemu/qemu/commit/02146d27c33675d511dd34134536416c7cd774da
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M tests/test-visitor-serialization.c

  Log Message:
  -----------
  test-visitor-serialization: Pass &error_abort to qobject_from_json()

qmp_deserialize() calls qobject_from_json() ignoring errors.  It
passes the result to qobject_input_visitor_new(), which asserts it's
not null.  Therefore, we can just as well pass &error_abort to
qobject_from_json().

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: b0f36b23f10d31191d1e5be2c8f01591915ed37f
      
https://github.com/qemu/qemu/commit/b0f36b23f10d31191d1e5be2c8f01591915ed37f
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M monitor.c

  Log Message:
  -----------
  monitor: Assert qmp_schema_json[] is sane

qmp_query_qmp_schema() parses qmp_schema_json[] with
qobject_from_json().  This must not fail, so pass &error_abort.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: 6c873d1149d47201dbb71f6e04791447605a17e1
      
https://github.com/qemu/qemu/commit/6c873d1149d47201dbb71f6e04791447605a17e1
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M tests/.gitignore
    M tests/Makefile.include
    A tests/test-qapi-util.c

  Log Message:
  -----------
  test-qapi-util: New, covering qapi/qapi-util.c

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: 069b64e3fe75c81edef6685c9941a7937a48fec4
      
https://github.com/qemu/qemu/commit/069b64e3fe75c81edef6685c9941a7937a48fec4
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M include/qapi/util.h
    M qapi/qapi-util.c
    M tests/test-qapi-util.c

  Log Message:
  -----------
  qapi: New parse_qapi_name()

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Message-Id: <address@hidden>


  Commit: f740048323398ebde9575a5730bf6d9f2a237f08
      
https://github.com/qemu/qemu/commit/f740048323398ebde9575a5730bf6d9f2a237f08
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M tests/test-keyval.c
    M util/keyval.c

  Log Message:
  -----------
  keyval: Restrict key components to valid QAPI names

Until now, key components are separated by '.'.  This leaves little
room for evolving the syntax, and is incompatible with the __RFQDN_
prefix convention for downstream extensions.

Since key components will be commonly used as QAPI member names by the
QObject input visitor, we can just as well borrow the QAPI naming
rules here: letters, digits, hyphen and period starting with a letter,
with an optional __RFQDN_ prefix for downstream extensions.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: 9d1eab4b95819006afc0ee7b88eaa83be5007f39
      
https://github.com/qemu/qemu/commit/9d1eab4b95819006afc0ee7b88eaa83be5007f39
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M include/qapi/qobject-input-visitor.h
    M qapi/qobject-input-visitor.c

  Log Message:
  -----------
  qapi: New qobject_input_visitor_new_str() for convenience

Signed-off-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>


  Commit: 42e5f39378c6e7a0ada563779bbb6f470f7c03ff
      
https://github.com/qemu/qemu/commit/42e5f39378c6e7a0ada563779bbb6f470f7c03ff
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M qemu-options.hx
    M vl.c

  Log Message:
  -----------
  block: Initial implementation of -blockdev

The new command line option -blockdev works like QMP command
blockdev-add.

The option argument may be given in JSON syntax, exactly as in QMP.
Example usage:

    -blockdev '{"node-name": "foo", "driver": "raw", "file": {"driver": "file", 
"filename": "foo.img"} }'

The JSON argument doesn't exactly blend into the existing option
syntax, so the traditional KEY=VALUE,... syntax is also supported,
using dotted keys to do the nesting:

    -blockdev node-name=foo,driver=raw,file.driver=file,file.filename=foo.img

This does not yet support lists, but that will be addressed shortly.

Note that calling qmp_blockdev_add() (say via qmp_marshal_block_add())
right away would crash.  We need to stash the configuration for later
instead.  This is crudely done, and bypasses QemuOpts, even though
storing configuration is what QemuOpts is for.  Need to revamp option
infrastructure to support QAPI types like BlockdevOptions.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Message-Id: <address@hidden>


  Commit: 31478f26ab4ed82d35b763bbf259810d0c8b44e1
      
https://github.com/qemu/qemu/commit/31478f26ab4ed82d35b763bbf259810d0c8b44e1
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M qapi/qobject-input-visitor.c

  Log Message:
  -----------
  qapi: Improve how keyval input visitor reports unexpected dicts

Incorrect option

    -blockdev node-name=foo,driver=file,filename=foo.img,aio.unmap=on

is rejected with "Invalid parameter type for 'aio', expected: string".
To make sense of this, you almost have to translate it into the
equivalent QMP command

    { "execute": "blockdev-add", "arguments": { "node-name": "foo", "driver": 
"file", "filename": "foo.img", "aio": { "unmap": true } } }

Improve the error message to "Parameters 'aio.*' are unexpected".
Take care not to confuse the case "unexpected nested parameters"
(i.e. the object is a QDict or QList) with the case "non-string scalar
parameter".  The latter is a misuse of the visitor, and should perhaps
be an assertion.  Note that test-qobject-input-visitor exercises this
misuse in test_visitor_in_int_keyval(), test_visitor_in_bool_keyval()
and test_visitor_in_number_keyval().

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: 79f759816485719bfb53c6591e7d4243a1913682
      
https://github.com/qemu/qemu/commit/79f759816485719bfb53c6591e7d4243a1913682
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M docs/qapi-code-gen.txt

  Log Message:
  -----------
  docs/qapi-code-gen.txt: Clarify naming rules

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-Id: <address@hidden>


  Commit: 0b2c1beea4358e40d1049b8ee019408ce96b37ce
      
https://github.com/qemu/qemu/commit/0b2c1beea4358e40d1049b8ee019408ce96b37ce
  Author: Markus Armbruster <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M qapi/qobject-input-visitor.c
    M tests/test-keyval.c
    M util/keyval.c

  Log Message:
  -----------
  keyval: Support lists

Additionally permit non-negative integers as key components.  A
dictionary's keys must either be all integers or none.  If all keys
are integers, convert the dictionary to a list.  The set of keys must
be [0,N].

Examples:

* list.1=goner,list.0=null,list.1=eins,list.2=zwei
  is equivalent to JSON [ "null", "eins", "zwei" ]

* a.b.c=1,a.b.0=2
  is inconsistent: a.b.c clashes with a.b.0

* list.0=null,list.2=eins,list.2=zwei
  has a hole: list.1 is missing

Similar design flaw as for objects: there is no way to denote an empty
list.  While interpreting "key absent" as empty list seems natural
(removing a list member from the input string works when there are
multiple ones, so why not when there's just one), it doesn't work:
"key absent" already means "optional list absent", which isn't the
same as "empty list present".

Update the keyval object visitor to use this a.0 syntax in error
messages rather than the usual a[0].

Signed-off-by: Markus Armbruster <address@hidden>
Message-Id: <address@hidden>
[Off-by-one fix squashed in, as per Kevin's review]
Reviewed-by: Kevin Wolf <address@hidden>


  Commit: 87467097f8811258cd91d42c141a7bd8492ed08a
      
https://github.com/qemu/qemu/commit/87467097f8811258cd91d42c141a7bd8492ed08a
  Author: Peter Maydell <address@hidden>
  Date:   2017-03-07 (Tue, 07 Mar 2017)

  Changed paths:
    M block.c
    M docs/qapi-code-gen.txt
    M include/qapi/qmp/qjson.h
    M include/qapi/qobject-input-visitor.h
    M include/qapi/util.h
    M include/qemu/option.h
    M monitor.c
    M qapi/qapi-util.c
    M qapi/qobject-input-visitor.c
    M qemu-options.hx
    M qobject/qjson.c
    M tests/.gitignore
    M tests/Makefile.include
    M tests/check-qjson.c
    M tests/libqtest.c
    A tests/test-keyval.c
    A tests/test-qapi-util.c
    M tests/test-qemu-opts.c
    M tests/test-qobject-input-visitor.c
    M tests/test-visitor-serialization.c
    M util/Makefile.objs
    A util/keyval.c
    M vl.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/armbru/tags/pull-block-2017-02-28-v4' 
into staging

block: Command line option -blockdev

# gpg: Signature made Tue 07 Mar 2017 15:07:59 GMT
# gpg:                using RSA key 0x3870B400EB918653
# gpg: Good signature from "Markus Armbruster <address@hidden>"
# gpg:                 aka "Markus Armbruster <address@hidden>"
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653

* remotes/armbru/tags/pull-block-2017-02-28-v4: (24 commits)
  keyval: Support lists
  docs/qapi-code-gen.txt: Clarify naming rules
  qapi: Improve how keyval input visitor reports unexpected dicts
  block: Initial implementation of -blockdev
  qapi: New qobject_input_visitor_new_str() for convenience
  keyval: Restrict key components to valid QAPI names
  qapi: New parse_qapi_name()
  test-qapi-util: New, covering qapi/qapi-util.c
  monitor: Assert qmp_schema_json[] is sane
  test-visitor-serialization: Pass &error_abort to qobject_from_json()
  check-qjson: Test errors from qobject_from_json()
  block: More detailed syntax error reporting for JSON filenames
  qobject: Propagate parse errors through qobject_from_json()
  test-qobject-input-visitor: Abort earlier on bad test input
  qjson: Abort earlier on qobject_from_jsonf() misuse
  libqtest: Fix qmp() & friends to abort on JSON parse errors
  qobject: Propagate parse errors through qobject_from_jsonv()
  qapi: Factor out common qobject_input_get_keyval()
  qapi: Factor out common part of qobject input visitor creation
  test-keyval: Cover use with qobject input visitor
  ...

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/43c227f9dd79...87467097f881

reply via email to

[Prev in Thread] Current Thread [Next in Thread]