switching from nose to trial testing devel
authorSandro Knauß <knauss@netzguerilla.net>
Thu, 09 Feb 2012 17:34:47 +0100
branchdevel
changeset 138 57c4450c8ba6
parent 137 e0073c462563
child 139 65117fd28400
switching from nose to trial testing
.hgignore
setup.py
tests/db.py
tests/dbtestcase.py
tests/xmlrpc.py
--- 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/*
--- 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',
--- 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"""
--- 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)
--- 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])