Skip to content
  • Eric Blake's avatar
    893e1f2c
    qapi: Enforce (or whitelist) case conventions on qapi members · 893e1f2c
    Eric Blake authored
    
    
    We document that members of enums and objects should be
    'lower-case', although we were not enforcing it.  We have to
    whitelist a few pre-existing entities that violate the norms.
    Add three new tests to expose the new error message, each of
    which first uses the whitelisted name 'UuidInfo' to prove the
    whitelist works, then triggers the failure (this is the same
    pattern used in the existing returns-whitelist.json test).
    
    Note that by adding this check, we have effectively forbidden
    an entity with a case-insensitive clash of member names, for
    any entity that is not on the whitelist (although there is
    still the possibility to clash via '-' vs. '_').
    
    Not done here: a future patch should also add naming convention
    support and whitelist exceptions for command, event, and type
    names.
    
    The additions to QAPISchemaMember.check_clash() check whether
    info['name'] is in the whitelist (the top-most entity name at
    the point 'info' tracks), rather than self.owner (the type,
    possibly implicit, that directly owns the member), because it
    is easier to maintain the whitelist by the names actually in
    the user's .json file, rather than worrying about the names
    of implicit types.
    
    Signed-off-by: default avatarEric Blake <eblake@redhat.com>
    Message-Id: <1449033659-25497-14-git-send-email-eblake@redhat.com>
    [Simplified a bit as per discussion with Eric]
    Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
    893e1f2c
    qapi: Enforce (or whitelist) case conventions on qapi members
    Eric Blake authored
    
    
    We document that members of enums and objects should be
    'lower-case', although we were not enforcing it.  We have to
    whitelist a few pre-existing entities that violate the norms.
    Add three new tests to expose the new error message, each of
    which first uses the whitelisted name 'UuidInfo' to prove the
    whitelist works, then triggers the failure (this is the same
    pattern used in the existing returns-whitelist.json test).
    
    Note that by adding this check, we have effectively forbidden
    an entity with a case-insensitive clash of member names, for
    any entity that is not on the whitelist (although there is
    still the possibility to clash via '-' vs. '_').
    
    Not done here: a future patch should also add naming convention
    support and whitelist exceptions for command, event, and type
    names.
    
    The additions to QAPISchemaMember.check_clash() check whether
    info['name'] is in the whitelist (the top-most entity name at
    the point 'info' tracks), rather than self.owner (the type,
    possibly implicit, that directly owns the member), because it
    is easier to maintain the whitelist by the names actually in
    the user's .json file, rather than worrying about the names
    of implicit types.
    
    Signed-off-by: default avatarEric Blake <eblake@redhat.com>
    Message-Id: <1449033659-25497-14-git-send-email-eblake@redhat.com>
    [Simplified a bit as per discussion with Eric]
    Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
Loading