qapi: Fix to reject empty union base gracefully
authorMarkus Armbruster <armbru@redhat.com>
Wed, 15 Mar 2017 12:56:58 +0000 (13:56 +0100)
committerMarkus Armbruster <armbru@redhat.com>
Thu, 16 Mar 2017 06:13:02 +0000 (07:13 +0100)
Common Python pitfall: 'assert base_members' fires on [] in addition
to None.  Correct to 'assert base_members is not None'.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <1489582656-31133-10-git-send-email-armbru@redhat.com>

scripts/qapi.py
tests/qapi-schema/union-base-empty.err

index 78db319831c802fd3610d36faeee656e8905fa08..f4c82100f4e64c08c0308a67683e6ab8e59216d8 100644 (file)
@@ -735,7 +735,7 @@ def check_union(expr, info):
             raise QAPISemError(info, "Flat union '%s' must have a base"
                                % name)
         base_members = find_base_members(base)
-        assert base_members
+        assert base_members is not None
 
         # The value of member 'discriminator' must name a non-optional
         # member of the base struct.
index 26bfa07bc9400fc96d2dae42ecee80d189f1cddb..7695806d81a2abd8911149190f72565f5930ad2b 100644 (file)
@@ -1,10 +1 @@
-Traceback (most recent call last):
-  File "tests/qapi-schema/test-qapi.py", line 56, in <module>
-    schema = QAPISchema(sys.argv[1])
-  File "scripts/qapi.py", line 1487, in __init__
-    self.exprs = check_exprs(parser.exprs)
-  File "scripts/qapi.py", line 921, in check_exprs
-    check_union(expr, info)
-  File "scripts/qapi.py", line 738, in check_union
-    assert base_members
-AssertionError
+tests/qapi-schema/union-base-empty.json:5: Discriminator 'type' is not a member of base struct 'Empty'