Add test for MyManager (enable only when MySQLdb is available). Configure tests using pgtoolkit.conf (same as used by other executables).
--- a/.hgignore Sat Sep 29 12:08:47 2012 +0200
+++ b/.hgignore Sat Sep 29 13:53:54 2012 +0200
@@ -1,7 +1,7 @@
-.*\.pyc
-.project
-.pydevproject
-.settings/org.eclipse.core.resources.prefs
-pgtoolkit\.conf
-build
-tests/tests\.conf
+^.*\.pyc$
+^.project
+^.pydevproject
+^.settings/org.eclipse.core.resources.prefs
+^pgtoolkit\.conf$
+^build
+^tests\.conf$
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/TESTING Sat Sep 29 13:53:54 2012 +0200
@@ -0,0 +1,15 @@
+TESTING
+=======
+
+All test should work at least with Python 2.7 and 3.2
+
+
+How to test
+-----------
+
+1. copy pgtoolkit.conf.example to pgtoolkit.conf, modify it so it points to your test database
+
+2. create test tables using sql/tests.sql
+
+3. run tests.py
+
--- a/mytoolkit/mymanager.py Sat Sep 29 12:08:47 2012 +0200
+++ b/mytoolkit/mymanager.py Sat Sep 29 13:53:54 2012 +0200
@@ -2,7 +2,7 @@
#
# MyManager - manage database connections (MySQL version)
#
-# Requires: Python 2.6, MySQLdb
+# Requires: Python 2.6 / 2.7, MySQLdb
#
# Part of pgtoolkit
# http://hg.devl.cz/pgtoolkit
@@ -93,7 +93,7 @@
self.keep_open = keep_open
self.parameters = kw
self.adjust_parameters()
-
+
def adjust_parameters(self):
'''Rename Postgres parameters to proper value for MySQL.'''
m = {'dbname' : 'db', 'password' : 'passwd'}
@@ -166,9 +166,9 @@
def close_conn(self, name='default'):
'''Close all connections of given name.
-
+
Connection credentials are still saved.
-
+
'''
while len(self.conn_pool[name]):
conn = self.conn_pool[name].pop()
@@ -176,9 +176,9 @@
def destroy_conn(self, name='default'):
'''Destroy connection.
-
+
Counterpart of create_conn.
-
+
'''
if not name in self.conn_known:
raise MyManagerError('Connection name "%s" not registered.' % name)
@@ -213,10 +213,10 @@
def put_conn(self, conn, name='default'):
'''Put connection back to pool.
-
+
Name must be same as used for get_conn,
otherwise things become broken.
-
+
'''
self.lock.acquire()
try:
@@ -241,10 +241,10 @@
@contextmanager
def cursor(self, name='default'):
'''Cursor context.
-
+
Uses any connection of name 'name' from pool
and returns cursor for that connection.
-
+
'''
conn = self.get_conn(name)
--- a/pgtoolkit.conf.example Sat Sep 29 12:08:47 2012 +0200
+++ b/pgtoolkit.conf.example Sat Sep 29 13:53:54 2012 +0200
@@ -1,6 +1,8 @@
### named connections
databases = {
- 'test' : 'host=127.0.0.1 user=test password=test dbname=test'
+ # database for tests.py (postgres, mysql - remove one of the lines to skip particular tests)
+ 'test' : 'host=127.0.0.1 dbname=test user=test password=test',
+ 'test_mysql' : 'host=127.0.0.1 db=test user=test password=test',
}
### meta database (contains connection parameters for other databases)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sql/tests.sql Sat Sep 29 13:53:54 2012 +0200
@@ -0,0 +1,6 @@
+CREATE TABLE test
+(
+ id serial NOT NULL,
+ name varchar,
+ PRIMARY KEY (id)
+);
--- a/tests.py Sat Sep 29 12:08:47 2012 +0200
+++ b/tests.py Sat Sep 29 13:53:54 2012 +0200
@@ -5,12 +5,21 @@
from tests import test_rowdict
from tests import testpgmanager
+enable_mysql = True
+try:
+ from tests import test_mymanager
+except ImportError:
+ enable_mysql = False
+
loader = unittest.TestLoader()
suite = unittest.TestSuite()
suite.addTests(loader.loadTestsFromModule(test_rowdict))
suite.addTests(loader.loadTestsFromModule(testpgmanager))
+if enable_mysql:
+ suite.addTests(loader.loadTestsFromModule(test_mymanager))
+
runner = unittest.TextTestRunner(verbosity=2)
result = runner.run(suite)
--- a/tests/TESTS Sat Sep 29 12:08:47 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-TESTS
-=====
-
-All test should work at least with Python 2.6, 2.7 and 3.2
-
-
-How to test
------------
-
-1. Copy tests.conf.example to tests.conf and modify it so it points to your test database.
-
-2. Create test tables using tests.sql
-
-3. Run individual tests.
-
--- a/tests/config.py Sat Sep 29 12:08:47 2012 +0200
+++ b/tests/config.py Sat Sep 29 13:53:54 2012 +0200
@@ -1,8 +1,3 @@
-import sys
-
-sys.path.insert(0, '..')
-
-
class Config(dict):
def __init__(self, fname):
with open(fname) as f:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_mymanager.py Sat Sep 29 13:53:54 2012 +0200
@@ -0,0 +1,34 @@
+#!/usr/bin/env python3
+
+from tests.config import Config
+from mytoolkit import mymanager
+
+import unittest
+
+
+class TestMyManager(unittest.TestCase):
+
+ def setUp(self):
+ cfg = Config('pgtoolkit.conf')
+ test_db_conn_params = cfg['databases']['test_mysql']
+ params = self.params_to_mapping(test_db_conn_params)
+ self.m = mymanager.get_instance()
+ self.m.create_conn(**params)
+
+ def tearDown(self):
+ self.m.destroy_conn()
+
+ def params_to_mapping(self, params):
+ return dict([param.split('=') for param in params.split(' ')])
+
+ def test_mysql_query(self):
+ with self.m.cursor() as curs:
+ ajaj = 1
+ curs.execute('SELECT %(ajaj)s AS ajaj', locals())
+ row = curs.fetchone_dict()
+ self.assertEqual(row.ajaj, ajaj)
+
+
+if __name__ == '__main__':
+ unittest.main()
+
--- a/tests/testpgmanager.py Sat Sep 29 12:08:47 2012 +0200
+++ b/tests/testpgmanager.py Sat Sep 29 13:53:54 2012 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3.2
+#!/usr/bin/env python3
from tests.config import Config
from pgtoolkit import pgmanager
@@ -9,10 +9,11 @@
class TestSuite(unittest.TestCase):
def setUp(self):
- cfg = Config('tests.conf')
+ cfg = Config('pgtoolkit.conf')
+ test_db_conn_params = cfg['databases']['test']
self.m = pgmanager.get_instance()
- self.m.create_conn(**cfg)
- self.m.create_conn('autocommit', isolation_level='autocommit', **cfg)
+ self.m.create_conn(dsn=test_db_conn_params)
+ self.m.create_conn('autocommit', isolation_level='autocommit', dsn=test_db_conn_params)
def tearDown(self):
self.m.destroy_conn()
@@ -48,6 +49,7 @@
self.assertTrue(curs.rowcount == 1)
self.m.put_conn(conn)
+
if __name__ == '__main__':
unittest.main()
--- a/tests/tests.conf.example Sat Sep 29 12:08:47 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-hostaddr='127.0.0.1'
-dbname='test'
-user='test'
-password='pass'
--- a/tests/tests.sql Sat Sep 29 12:08:47 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-CREATE TABLE test
-(
- id serial NOT NULL,
- name varchar,
- PRIMARY KEY (id)
-);