############################################################################ # David W. Robertson, LBNL # See Copyright for copyright notice! ########################################################################### import sys, ConfigParser, unittest import StringIO from ZSI import wsdl2python #from pyGridWare import wsdl2python from ZSI.wstools.WSDLTools import WSDLReader from pyGridWare.test import utils """ Unittest for the wsdl2python class """ def setUpWsdl(path): if path[:7] == 'http://': wsdl = WSDLReader().loadFromURL(path) else: wsdl = WSDLReader().loadFromFile(path) return wsdl class Wsdl2pythonTest(unittest.TestCase): """Test case for wsdl2python.WriteServiceModule """ def __init__(self, methodName='runTest'): global configLoader unittest.TestCase.__init__(self, methodName) def setUp(self): # not thread safe self.path = configLoader.nameGenerator.next() print self.path sys.stdout.flush() self.testdiff = utils.TestDiff(self) self.wsdl = configLoader.nameGenerator.next() def tearDown(self): if self.wsdl is not None: del self.wsdl self.testdiff.close() def __str__(self): teststr = unittest.TestCase.__str__(self) if hasattr(self, "path"): return "%s: %s" % (teststr, self.path ) else: return "%s" % (teststr) def do_diffs(self, choice): self.failUnless(self.wsdl is not None, "Unable to start, load failed") codegen = wsdl2python.WriteServiceModule(self.wsdl) f_types, f_services = codegen.get_module_names() strFile = StringIO.StringIO() if choice == "service_types": self.testdiff.setDiffFile(f_types + ".py") codegen.write_service_types(f_types, strFile) else: self.testdiff.setDiffFile(f_services + ".py") codegen.write_services(f_types, f_services, strFile) self.testdiff.failUnlessEqual(strFile) strFile.close() def test_Xmethods_service_types(self): # add exception for url not found self.do_diffs("service_types") def test_Xmethods_services(self): self.do_diffs("services") def makeTestSuite(topLevel=False, config=None): global configLoader suite = unittest.TestSuite() if not hasattr(sys.modules[__name__], "configLoader"): if not config: configLoader = utils.MatchTestLoader(False, "config.py", "Wsdl2pythonTest") else: configLoader = config configLoader.testMethodPrefix = "test" suite.addTest(configLoader.loadTestsFromConfig(Wsdl2pythonTest, "services_by_http", valueFunc = setUpWsdl)) return suite def main(): global configLoader configLoader = utils.MatchTestLoader(False, "config.py", "makeTestSuite") unittest.main(defaultTest="makeTestSuite", testLoader=configLoader) if __name__ == "__main__" : main()