Miscellaneous patches for 2018-08-15

-----BEGIN PGP SIGNATURE-----
 
 iQIcBAABAgAGBQJbc8UDAAoJEDhwtADrkYZTxZsP/itLPJvthaavG4ppJbPYQNBF
 ys+lT66EfSQF9itlok6X0Z/3TseoXl2VbBQGfzd0q/TxAoiXOLRmTS34E+cM4DdM
 KNcp1WpD+05aupWnelkvUnSuQV4HLY963MUBuPrpG9pCfvl+kygYo7pibSflaY4X
 XC2Os0mbEsxtz6HcwCMZ4G4fxLHTfJwBDiitODlsig8cOnuUEr8mCTsk/G0uYSgt
 FnKSr0lV475AK0+ACQ4X/eM+f567hrZ3Ew37XUMJB6DQBkiGz0hc6gIEW///Zgu0
 LU00pbc8r1GGRoUA/2f8GL1sqb56v3hahrMmcq93/JNcHl04NLL8sefN/L4soRY/
 /rI4BbddX9/nf6IFHTXFyModvt4oIhCdMMoE9eu7Nm5SMgG9NKOopw0lgJ00BN0j
 wZiBmmMUKEQvYPj8MnGINQJKBy+uUf0GCAgYbf59iKM7ZadmUdIRdBs9+LsDAcZD
 m5E612CZ8tF+hx5lJKiGfIjNNsdtzor4eOm7qaTKQvvbzwzJ+Wz+sFkaYsNQAN+s
 sP/Wj6eUf5UYeB4Z8MLl0vmYKPJxbOhYdaMNeKofh55jyfovQgLnewFwX+242a7U
 jiLCcNcctmH0OBC/HMnlSIg/LpwcubWXyKrt5ls7Mr1XvXnkTkegvFKM+7Td6s8C
 JvyqMN0tTZLKgJCMB4QI
 =ICqR
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/armbru/tags/pull-misc-2018-08-15' into staging

Miscellaneous patches for 2018-08-15

# gpg: Signature made Wed 15 Aug 2018 07:15:31 BST
# gpg:                using RSA key 3870B400EB918653
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>"
# gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>"
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653

* remotes/armbru/tags/pull-misc-2018-08-15:
  monitor: fix oob command leak
  tests: fix crumple/recursive leak
  qapi: Fix some pycodestyle-3 complaints
  tests: change /0.15/* tests to /qmp/*
  qmp-shell: learn to send commands with quoted arguments

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2018-08-15 20:20:34 +01:00
commit c146b54c7f
7 changed files with 27 additions and 19 deletions

View File

@ -4277,6 +4277,8 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)
trace_monitor_qmp_cmd_out_of_band(qobject_get_try_str(id)
?: "");
monitor_qmp_dispatch(mon, req, id);
qobject_unref(req);
qobject_unref(id);
return;
}

View File

@ -884,12 +884,12 @@ def check_keys(expr_elem, meta, required, optional=[]):
if key not in required and key not in optional:
raise QAPISemError(info, "Unknown key '%s' in %s '%s'"
% (key, meta, name))
if (key == 'gen' or key == 'success-response') and value is not False:
if key in ['gen', 'success-response'] and value is not False:
raise QAPISemError(info,
"'%s' of %s '%s' should only use false value"
% (key, meta, name))
if (key == 'boxed' or key == 'allow-oob' or
key == 'allow-preconfig') and value is not True:
if (key in ['boxed', 'allow-oob', 'allow-preconfig']
and value is not True):
raise QAPISemError(info,
"'%s' of %s '%s' should only use true value"
% (key, meta, name))
@ -1845,12 +1845,12 @@ def camel_to_upper(value):
return c_fun_str
new_name = ''
l = len(c_fun_str)
for i in range(l):
length = len(c_fun_str)
for i in range(length):
c = c_fun_str[i]
# When c is upper and no '_' appears before, do more checks
if c.isupper() and (i > 0) and c_fun_str[i - 1] != '_':
if i < l - 1 and c_fun_str[i + 1].islower():
if i < length - 1 and c_fun_str[i + 1].islower():
new_name += '_'
elif c_fun_str[i - 1].isdigit():
new_name += '_'
@ -1863,6 +1863,7 @@ def c_enum_const(type_name, const_name, prefix=None):
type_name = prefix
return camel_to_upper(type_name) + '_' + c_name(const_name, False).upper()
if hasattr(str, 'maketrans'):
c_name_trans = str.maketrans('.-', '__')
else:
@ -1912,6 +1913,7 @@ def c_name(name, protect=True):
return 'q_' + name
return name
eatspace = '\033EATSPACE.'
pointer_suffix = ' *' + eatspace
@ -1922,6 +1924,7 @@ def genindent(count):
ret += ' '
return ret
indent_level = 0

View File

@ -187,7 +187,7 @@ void visit_type_%(c_name)s(Visitor *v, const char *name, %(c_name)s **obj, Error
}
switch ((*obj)->type) {
''',
c_name=c_name(name))
c_name=c_name(name))
for var in variants.variants:
ret += mcgen('''

View File

@ -74,6 +74,7 @@ import sys
import os
import errno
import atexit
import shlex
class QMPCompleter(list):
def complete(self, text, state):
@ -219,7 +220,7 @@ class QMPShell(qmp.QEMUMonitorProtocol):
< command-name > [ arg-name1=arg1 ] ... [ arg-nameN=argN ]
"""
cmdargs = cmdline.split()
cmdargs = shlex.split(cmdline)
# Transactional CLI entry/exit:
if cmdargs[0] == 'transaction(':

View File

@ -491,6 +491,7 @@ static void qdict_crumple_test_recursive(void)
empty_list_0 = qobject_to(QDict, qlist_pop(empty_list));
g_assert(empty_list_0);
g_assert_cmpint(qdict_size(empty_list_0), ==, 0);
qobject_unref(empty_list_0);
qobject_unref(src);
qobject_unref(dst);

View File

@ -34,8 +34,8 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
if base:
print(' base %s' % base.name)
for m in members:
print(' member %s: %s optional=%s' % \
(m.name, m.type.name, m.optional))
print(' member %s: %s optional=%s'
% (m.name, m.type.name, m.optional))
self._print_variants(variants)
self._print_if(ifcond)
@ -46,10 +46,11 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
def visit_command(self, name, info, ifcond, arg_type, ret_type, gen,
success_response, boxed, allow_oob, allow_preconfig):
print('command %s %s -> %s' % \
(name, arg_type and arg_type.name, ret_type and ret_type.name))
print(' gen=%s success_response=%s boxed=%s oob=%s preconfig=%s' % \
(gen, success_response, boxed, allow_oob, allow_preconfig))
print('command %s %s -> %s'
% (name, arg_type and arg_type.name,
ret_type and ret_type.name))
print(' gen=%s success_response=%s boxed=%s oob=%s preconfig=%s'
% (gen, success_response, boxed, allow_oob, allow_preconfig))
self._print_if(ifcond)
def visit_event(self, name, info, ifcond, arg_type, boxed):

View File

@ -286,11 +286,11 @@ int main(int argc, char **argv)
{
g_test_init(&argc, &argv, NULL);
g_test_add_func("/0.15/dispatch_cmd", test_dispatch_cmd);
g_test_add_func("/0.15/dispatch_cmd_failure", test_dispatch_cmd_failure);
g_test_add_func("/0.15/dispatch_cmd_io", test_dispatch_cmd_io);
g_test_add_func("/0.15/dealloc_types", test_dealloc_types);
g_test_add_func("/0.15/dealloc_partial", test_dealloc_partial);
g_test_add_func("/qmp/dispatch_cmd", test_dispatch_cmd);
g_test_add_func("/qmp/dispatch_cmd_failure", test_dispatch_cmd_failure);
g_test_add_func("/qmp/dispatch_cmd_io", test_dispatch_cmd_io);
g_test_add_func("/qmp/dealloc_types", test_dealloc_types);
g_test_add_func("/qmp/dealloc_partial", test_dealloc_partial);
test_qmp_init_marshal(&qmp_commands);
g_test_run();