|
From: <bov...@us...> - 2009-04-27 19:14:59
|
Revision: 1490
http://pywebsvcs.svn.sourceforge.net/pywebsvcs/?rev=1490&view=rev
Author: boverhof
Date: 2009-04-27 19:14:49 +0000 (Mon, 27 Apr 2009)
Log Message:
-----------
A test/test_AnyType.py
M test/test_zsi.py
M ZSI/__init__.py
M ZSI/TC.py
-- FIX BUG [ ZSI.EvaluateException: Any can't parse element - ID: 2762639 ]
Modified Paths:
--------------
trunk/zsi/ZSI/TC.py
trunk/zsi/ZSI/__init__.py
trunk/zsi/test/test_zsi.py
Added Paths:
-----------
trunk/zsi/test/test_AnyType.py
Modified: trunk/zsi/ZSI/TC.py
===================================================================
--- trunk/zsi/ZSI/TC.py 2009-04-09 18:46:59 UTC (rev 1489)
+++ trunk/zsi/ZSI/TC.py 2009-04-27 19:14:49 UTC (rev 1490)
@@ -1465,7 +1465,7 @@
# element declarations
prefix, typeName = SplitQName(_find_type(elt))
if not skip and typeName:
- namespaceURI = _resolve_prefix(elt, prefix or 'xmlns')
+ namespaceURI = _resolve_prefix(elt, prefix)
# First look thru user defined namespaces, if don't find
# look for 'primitives'.
pyclass = GTD(namespaceURI, typeName) or Any
Modified: trunk/zsi/ZSI/__init__.py
===================================================================
--- trunk/zsi/ZSI/__init__.py 2009-04-09 18:46:59 UTC (rev 1489)
+++ trunk/zsi/ZSI/__init__.py 2009-04-27 19:14:49 UTC (rev 1490)
@@ -224,9 +224,9 @@
_find_type = lambda E: _find_xsi_attr(E, "type")
_find_xmlns_prefix = lambda E, attr: E.getAttributeNS(_XMLNS.BASE, attr)
-_find_default_namespace = lambda E: E.getAttributeNS(_XMLNS.BASE, None)
+_find_default_namespace = lambda E: E.getAttributeNS(_XMLNS.BASE, 'xmlns')
-#_textprotect = lambda s: s.replace('&', '&').replace('<', '<')
+_textprotect = lambda s: s.replace('&', '&').replace('<', '<')
_get_element_nsuri_name = lambda E: (E.namespaceURI, E.localName)
Added: trunk/zsi/test/test_AnyType.py
===================================================================
--- trunk/zsi/test/test_AnyType.py (rev 0)
+++ trunk/zsi/test/test_AnyType.py 2009-04-27 19:14:49 UTC (rev 1490)
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+import unittest, sys, tests_good, tests_bad, time
+from ZSI import *
+try:
+ import cStringIO as StringIO
+except ImportError:
+ import StringIO
+
+"""Bug [ 1520092 ] URI Bug: urllib.quote escaping reserved chars
+ Bug [ 2748314 ] Malformed type attribute (bad NS) with 2.1a1 but not with 2.
+"""
+
+class MyInt_Def(TC.Integer, schema.TypeDefinition):
+ # ComplexType/SimpleContent derivation of built-in type
+ schema = "urn:vim25"
+ type = (schema, "myInt")
+ def __init__(self, pname, **kw):
+ self.attribute_typecode_dict = {}
+ TC.Integer.__init__(self, pname, **kw)
+ #class Holder(int):
+ # __metaclass__ = pyclass_type
+ # typecode = self
+ #self.pyclass = Holder
+ self.pyclass = int
+
+class TestCase(unittest.TestCase):
+
+ def check_type_attribute_qname_in_default_ns(self):
+ msg = """
+<ns1:test xsi:type="ns1:myInt" xmlns:ns1="urn:vim25" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://www.w3.org/2001/XMLSchema">
+100
+</ns1:test>"""
+ ps = ParsedSoap(msg, envelope=False)
+ pyobj = ps.Parse(TC.AnyType(pname=("urn:vim25","test")))
+ self.failUnless(pyobj == 100, 'failed to parse type in default ns')
+
+ def check_element_in_default_ns(self):
+ msg = """
+<test xsi:type="myInt" xmlns="urn:vim25" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+100
+</test>"""
+ ps = ParsedSoap(msg, envelope=False)
+ pyobj = ps.Parse(TC.AnyType(pname=("urn:vim25","test")))
+ self.failUnless(pyobj == 100, 'failed to parse element in default ns')
+
+
+#
+# Creates permutation of test options: "check", "check_any", etc
+#
+_SEP = '_'
+for t in [i[0].split(_SEP) for i in filter(lambda i: callable(i[1]), TestCase.__dict__.items())]:
+ test = ''
+ for f in t:
+ test += f
+ if globals().has_key(test): test += _SEP; continue
+ def _closure():
+ name = test
+ def _makeTestSuite():
+ suite = unittest.TestSuite()
+ suite.addTest(unittest.makeSuite(TestCase, name))
+ return suite
+ return _makeTestSuite
+
+ globals()[test] = _closure()
+ test += _SEP
+
+
+makeTestSuite = check
+def main():
+ unittest.main(defaultTest="makeTestSuite")
+if __name__ == "__main__" : main()
+
Modified: trunk/zsi/test/test_zsi.py
===================================================================
--- trunk/zsi/test/test_zsi.py 2009-04-09 18:46:59 UTC (rev 1489)
+++ trunk/zsi/test/test_zsi.py 2009-04-27 19:14:49 UTC (rev 1490)
@@ -14,6 +14,7 @@
import test_URI
import test_rfc2617
import test_QName
+import test_AnyType
def makeTestSuite():
return unittest.TestSuite(
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|