Contact: fumanchu@aminus.org

Log in as guest/geniusql to create tickets

Changeset 266

Show
Ignore:
Timestamp:
01/27/09 19:45:47
Author:
fumanchu
Message:

New test and fix for mysql ENUM.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/geniusql/providers/mysql.py

    r264 r266  
    777777                    args = [x.strip() for x in args.split(",")] 
    778778                    dbtype.precision, dbtype.scale = map(int, args) 
     779                elif isinstance(dbtype, VARCHAR): 
     780                    # This is an ENUM. Strip quotes. 
     781                    args = [x.strip().strip("'\"") for x in args.split(",")] 
     782                    dbtype.enum_values = args 
     783                    dbtype.bytes = 1 
     784                    if len(args) > 255: 
     785                        dbtype.bytes = 2 
    779786                else: 
    780787                    dbtype.bytes = int(args) 
  • trunk/geniusql/test/test.py

    r247 r266  
     1import datetime 
    12import getopt 
    23import os 
     
    45import sys 
    56import unittest 
     7 
     8import geniusql 
    69 
    710 
     
    197200 
    198201 
     202class Provider(object): 
     203     
     204    db = None 
     205    schema = None 
     206    logname = os.path.join(localDir, "geniusqltest.log") 
     207     
     208    def geniusqllog(self, message): 
     209        """Geniusql logger (writes to error.log).""" 
     210        if isinstance(message, unicode): 
     211            message = message.encode('utf8') 
     212        s = "%s %s" % (datetime.datetime.now().isoformat(), message) 
     213        f = open(self.logname, 'ab') 
     214        f.write(s + '\n') 
     215        f.close() 
     216     
     217    def setup(self, provider, opts): 
     218        """Set up storage for Zoo classes.""" 
     219        self.db = geniusql.db(provider, **opts) 
     220        self.db.log = self.geniusqllog 
     221        print self.db.version() 
     222        self.db.create() 
     223         
     224        self.schema = self.db.schema() 
     225        self.schema.create() 
     226 
     227    def teardown(self): 
     228        """Tear down storage for Zoo classes.""" 
     229        try: 
     230            self.schema.drop() 
     231        except (AttributeError, NotImplementedError): 
     232            pass 
     233        try: 
     234            self.db.drop() 
     235        except (AttributeError, NotImplementedError): 
     236            pass 
     237        self.db.connections.shutdown() 
     238 
     239 
    199240def run(): 
    200241    testList = [ 
  • trunk/geniusql/test/zoo_fixture.py

    r259 r266  
    22 
    33import datetime 
    4 import os 
    5 thisdir = os.path.dirname(__file__) 
    6 logname = os.path.join(thisdir, "geniusqltest.log") 
    74 
    85 
     
    2219import geniusql 
    2320from geniusql import errors, typerefs 
    24 from geniusql.test import tools 
     21from geniusql.test import tools, test 
    2522 
    2623from geniusql import logic, logicfuncs 
     
    15341531##        self.arena.rename_property(Animal, "Species", "Family") 
    15351532 
    1536  
    15371533db = None 
    15381534schema = None 
    15391535 
    1540 def _geniusqllog(message): 
    1541     """Geniusql logger (writes to error.log).""" 
    1542     if isinstance(message, unicode): 
    1543         message = message.encode('utf8') 
    1544     s = "%s %s" % (datetime.datetime.now().isoformat(), message) 
    1545     f = open(logname, 'ab') 
    1546     f.write(s + '\n') 
    1547     f.close() 
    1548  
    1549 def setup(provider, opts): 
    1550     """Set up storage for Zoo classes.""" 
    1551     global db, schema 
    1552     db = geniusql.db(provider, **opts) 
    1553     db.log = _geniusqllog 
    1554     print db.version() 
    1555     db.create() 
    1556      
    1557     schema = db.schema() 
    1558     schema.create() 
    1559  
    1560 def teardown(): 
    1561     """Tear down storage for Zoo classes.""" 
    1562     try: 
    1563         schema.drop() 
    1564     except (AttributeError, NotImplementedError): 
    1565         pass 
    1566     try: 
    1567         db.drop() 
    1568     except (AttributeError, NotImplementedError): 
    1569         pass 
    1570     db.connections.shutdown() 
    15711536 
    15721537def run(DB_class, opts): 
     
    15751540     
    15761541    try: 
    1577         try: 
    1578             setup(DB_class, opts) 
     1542        provider = test.Provider() 
     1543        try: 
     1544            provider.setup(DB_class, opts) 
     1545            global db, schema 
     1546            db = provider.db 
     1547            schema = provider.schema 
    15791548            loader = unittest.TestLoader().loadTestsFromTestCase 
    15801549             
     
    16021571            if opts.get('name') != ':memory:' and 'isolation' not in skiptests: 
    16031572                tools.TestRunner.run(loader(IsolationTests)) 
    1604              
    1605 ##            tools.TestRunner.run(loader(DiscoveryTests)) 
    16061573        except: 
    16071574            traceback.print_exc() 
    16081575    finally: 
    1609         teardown() 
     1576        provider.teardown()