# HG changeset patch # User Sandro Knauß # Date 1328805287 -3600 # Node ID 57c4450c8ba6638a2ba75efc4fea07a861816dd5 # Parent e0073c462563791ff1236628f5a72552054a5878 switching from nose to trial testing diff -r e0073c462563 -r 57c4450c8ba6 .hgignore --- a/.hgignore Wed Feb 08 14:19:46 2012 +0100 +++ b/.hgignore Thu Feb 09 17:34:47 2012 +0100 @@ -14,3 +14,4 @@ iro.egg-info/* dist/* build/* +_trial_temp/* diff -r e0073c462563 -r 57c4450c8ba6 setup.py --- a/setup.py Wed Feb 08 14:19:46 2012 +0100 +++ b/setup.py Thu Feb 09 17:34:47 2012 +0100 @@ -6,9 +6,9 @@ setup(name='iro', version=__version__, packages=['iro','iro.controller','iro.view','iro.model'], - setup_requires = ['nose>=0.11',"ngmodules>=0.2"], + setup_requires = ["ngmodules>=0.2"], install_requires=['twisted>=11.1.0',"ConfigParser","sqlalchemy","MySQL-python","SOAPpy",'decorator'], - test_suite="nose.collector", + #test_suite="nose.collector", #ToDo switch to trial description='Non Blocking Interface for sending a bunsh of SMSes, FAXes and Mails', author='Sandro Knauß', author_email='knauss@netzguerilla.net', diff -r e0073c462563 -r 57c4450c8ba6 tests/db.py --- a/tests/db.py Wed Feb 08 14:19:46 2012 +0100 +++ b/tests/db.py Thu Feb 09 17:34:47 2012 +0100 @@ -5,7 +5,7 @@ from iro.model.schema import User, Offer, Userright, Job, Message from decimal import Decimal -from .dbtestcase import DBTestCase, setUpModule, tearDownModule +from .dbtestcase import DBTestCase class DBTests(DBTestCase): """tests for the db model""" diff -r e0073c462563 -r 57c4450c8ba6 tests/dbtestcase.py --- a/tests/dbtestcase.py Wed Feb 08 14:19:46 2012 +0100 +++ b/tests/dbtestcase.py Thu Feb 09 17:34:47 2012 +0100 @@ -1,9 +1,10 @@ -import unittest +from twisted.trial import unittest from sqlalchemy import create_engine, pool from tempfile import mkdtemp -import shutil +from shutil import rmtree +import atexit from ngdatabase.mysql import Server, createConfig, Database from iro.model import schema, setEngine @@ -16,8 +17,11 @@ '''a TestCase with DB connection you have to set self.session manually in setUp''' def __init__(self,*args,**kwargs): + unittest.TestCase.__init__(self,*args,**kwargs) self.engine = md.engine - unittest.TestCase.__init__(self,*args,**kwargs) + + def setUp(self): + md.setUp() def tearDown(self): self.__cleanDB() @@ -32,38 +36,40 @@ for table in schema.__tables__: session.query(getattr(schema,table)).delete() + class SampleDatabase(Database): def createPassword(self): self.password="test" return self.password -class ModuleData: +class ModuleData(object): def __init__(self): + self.create() + + def close(self): + self.server.stop() + rmtree(self.tdir) + self.valid= False + + def create(self): self.tdir = mkdtemp(prefix='iro-mysql-') self.server = Server('%s/my.cnf'%self.tdir) self.db = SampleDatabase("test","test",'%s/my.cnf'%self.tdir) self.engine = create_engine('mysql://test:test@localhost/test?unix_socket=%s/socket'%self.tdir, poolclass = pool.SingletonThreadPool, pool_size=dbPool.maxthreads, )#echo=True) + self.vaild = False def setUp(self): - with open('%s/my.cnf'%self.tdir,'w') as cnf: - cnf.write(createConfig(self.tdir)) - self.server.create() - self.server.start() - self.db.create() - Base.metadata.create_all(self.engine) - setEngine(self.engine) + if not self.vaild: + with open('%s/my.cnf'%self.tdir,'w') as cnf: + cnf.write(createConfig(self.tdir)) + self.server.create() + self.server.start() + self.db.create() + Base.metadata.create_all(self.engine) + setEngine(self.engine) + self.vaild = True - def tearDown(self): - self.server.stop() - shutil.rmtree(self.tdir) - md=ModuleData() - -def setUpModule(): - md.setUp() - -def tearDownModule(): - md.tearDown() - +atexit.register(md.close) diff -r e0073c462563 -r 57c4450c8ba6 tests/xmlrpc.py --- a/tests/xmlrpc.py Wed Feb 08 14:19:46 2012 +0100 +++ b/tests/xmlrpc.py Thu Feb 09 17:34:47 2012 +0100 @@ -13,20 +13,13 @@ import iro.error as IroError -from .dbtestcase import DBTestCase, setUpModule, tearDownModule - - -#activates all logging we can get. +from .dbtestcase import DBTestCase -from twisted.python import log -import logging -logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s(%(processName)s)-%(levelname)s: %(message)s') -observer = log.PythonLoggingObserver() -observer.start() class XMLRPCTest(DBTestCase): """tests for the xmlrpc interface""" def setUp(self): + DBTestCase.setUp(self) self.s = Process(target=startReactor, args=(self.engine,)) self.s.start() #the new process needs time to get stated, so this process has to sleep @@ -75,9 +68,7 @@ self.failUnlessEqual(self.__rpc2().status('abcdef123456789', '', 0), status) #JobNotFound - with self.assertRaises(Fault) as fault: - self.__rpc2().status('abcdef123456789',jid+1) - exc = fault.exception + exc = self.assertRaises(Fault, self.__rpc2().status, 'abcdef123456789',jid+1) unf = IroError.JobNotFound() self.failUnlessEqual(exc.faultCode, unf.code) self.failUnlessEqual(exc.faultString, unf.msg) @@ -89,26 +80,20 @@ def testNoSuchUser(self): '''a unknown user should raise a UserNotNound Exception bewcause xmlrpc only has a Fault exception this Exception has to be deliverd through a xmlrpclib.Fault Exception''' - with self.assertRaises(Fault) as fault: - self.__rpc2().status('abcdef123456789') - exc = fault.exception + exc = self.assertRaises(Fault, self.__rpc2().status, 'abcdef123456789') unf=IroError.UserNotFound() self.failUnlessEqual(exc.faultCode, unf.code) self.failUnlessEqual(exc.faultString, unf.msg) def testNoSuchMethod(self): '''a unknown mothod should raise a Exception ''' - with self.assertRaises(Fault) as fault: - self.__rpc2().nosuchmethod() - exc = fault.exception + exc = self.assertRaises(Fault, self.__rpc2().nosuchmethod) self.failUnlessEqual(exc.faultCode, 8001) self.failUnlessEqual(exc.faultString, "procedure nosuchmethod not found") def testValidationFault(self): '''a validate Exception should be translated to a xmlrpclib.Fault.''' - with self.assertRaises(Fault) as fault: - self.__rpc2().status('xxx') - exc = fault.exception + exc = self.assertRaises(Fault, self.__rpc2().status,'xxx') self.failUnlessEqual(exc.faultCode, 700) self.failUnlessEqual(exc.faultString, "Validation of 'apikey' failed.") @@ -121,9 +106,7 @@ session.add(u) self.failUnlessEqual(self.__rpc2().routes('abcdef123456789','sms'),['sipgate_basic']) - with self.assertRaises(Fault) as fault: - self.__rpc2().routes('abcdef123456789','fax') - exc = fault.exception + exc = self.assertRaises(Fault, self.__rpc2().routes,'abcdef123456789','fax') self.failUnlessEqual(exc.faultCode, 700) self.failUnlessEqual(exc.faultString, "Typ is not valid.") @@ -161,9 +144,7 @@ invalid=['xa','+1','1-23',';:+0','0123'] - with self.assertRaises(Fault) as fault: - self.__rpc2().telnumber(['01234']+invalid) - exc = fault.exception + exc = self.assertRaises(Fault, self.__rpc2().telnumber,['01234']+invalid) self.failUnlessEqual(exc.faultCode, 701) self.failUnlessEqual(exc.faultString, "No valid telnumber: '%s'" % invalid[0]) @@ -176,9 +157,7 @@ def testInvaildEmail(self): '''test invaild email adresses (got from wikipedia)''' invalid=["Abc.example.com",] - with self.assertRaises(Fault) as fault: - self.__rpc2().email(invalid) - exc = fault.exception + exc= self.assertRaises(Fault, self.__rpc2().email, invalid) self.failUnlessEqual(exc.faultCode, 702) self.failUnlessEqual(exc.faultString, "No valid email: '%s'" % invalid[0])