python/ovs/ovsuuid: Fix behavior of UUID.from_json() with no symbol table.
authorBen Pfaff <blp@nicira.com>
Mon, 28 Feb 2011 23:33:08 +0000 (15:33 -0800)
committerBen Pfaff <blp@nicira.com>
Thu, 10 Mar 2011 19:23:58 +0000 (11:23 -0800)
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.

python/ovs/ovsuuid.py
tests/ovsdb-data.at

index 98c65f3dbf710535072079c9507f6eee70f47264..8a76d3a7f6386fbf272c97fc79033385c908c487 100644 (file)
@@ -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:
index 973696194f02dabae71404d342002a90a869ed99..d45e07bfaf9f61565995d3abb646d3036f2c3ddf 100644 (file)
@@ -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", <string>]]])
 
+OVSDB_CHECK_POSITIVE_CPY([named-uuid requires symbol table],
+  [parse-atoms '[["uuid"]]' '[["named-uuid", "x"]]'],
+  [[syntax "["named-uuid","x"]": syntax error: expected ["uuid", <string>]]])
+
 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])