From: Ben Pfaff Date: Mon, 28 Feb 2011 23:33:08 +0000 (-0800) Subject: python/ovs/ovsuuid: Fix behavior of UUID.from_json() with no symbol table. X-Git-Tag: v1.1.0~172 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=fdba672899fe192cb8c646d5b6d6d9260f42904d;hp=c36cf65edac28ccd7d2681521a651c35c8b2453e;p=sliver-openvswitch.git python/ovs/ovsuuid: Fix behavior of UUID.from_json() with no symbol table. UUID.from_json(['named-uuid', 'x'], None) should raise an error about invalid syntax, but instead it was raising a TypeError because it would try to evaluate "'x' not in None". This fixes the problem and adds a test. --- diff --git a/python/ovs/ovsuuid.py b/python/ovs/ovsuuid.py index 98c65f3db..8a76d3a7f 100644 --- a/python/ovs/ovsuuid.py +++ b/python/ovs/ovsuuid.py @@ -1,4 +1,4 @@ -# Copyright (c) 2009, 2010 Nicira Networks +# Copyright (c) 2009, 2010, 2011 Nicira Networks # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -51,6 +51,8 @@ class UUID(uuid.UUID): raise error.Error("\"%s\" is not a valid UUID" % s, json) return UUID(s) except error.Error, e: + if not symtab: + raise e try: name = ovs.db.parser.unwrap_json(json, "named-uuid", unicode) except error.Error: diff --git a/tests/ovsdb-data.at b/tests/ovsdb-data.at index 973696194..d45e07bfa 100644 --- a/tests/ovsdb-data.at +++ b/tests/ovsdb-data.at @@ -260,6 +260,10 @@ OVSDB_CHECK_POSITIVE_CPY([uuid atom must be expressed as JSON array], [[parse-atoms '["uuid"]' '["550e8400-e29b-41d4-a716-446655440000"]']], [[syntax ""550e8400-e29b-41d4-a716-446655440000"": syntax error: expected ["uuid", ]]]) +OVSDB_CHECK_POSITIVE_CPY([named-uuid requires symbol table], + [parse-atoms '[["uuid"]]' '[["named-uuid", "x"]]'], + [[syntax "["named-uuid","x"]": syntax error: expected ["uuid", ]]]) + OVSDB_CHECK_NEGATIVE([empty string atom must be quoted], [[parse-atom-strings '["string"]' '']], [An empty string is not valid as input; use "" to represent the empty string])