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. |