index f96663a847979a98b27ccb6c690c23205a7b8240..3d2629c32bf947f37d397d37444d9da830a33e8f 100644 (file)
--- a/test/test_postgresql.py
+++ b/test/test_postgresql.py
# FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-#
-# $Id: test_postgresql.py,v 1.2 2003-10-26 14:43:51 jlgijsbers Exp $
+#
+# $Id: test_postgresql.py,v 1.13 2006-08-23 12:57:10 schlatterbeck Exp $
-import unittest, os, shutil, time
+import unittest
from roundup.hyperdb import DatabaseError
-from db_test_base import DBTest, ROTest, config, SchemaTest, nodbconfig, \
- ClassicInitTest
+from db_test_base import DBTest, ROTest, config, SchemaTest, ClassicInitTest
-from roundup import backends
+from roundup.backends import get_backend, have_backend
class postgresqlOpener:
- if hasattr(backends, 'postgresql'):
- from roundup.backends import postgresql as module
+ if have_backend('postgresql'):
+ module = get_backend('postgresql')
+
+ def setUp(self):
+ pass
def tearDown(self):
- self.db.close()
- self.module.Database.nuke(config)
+ self.nuke_database()
+
+ def nuke_database(self):
+ # clear out the database - easiest way is to nuke and re-create it
+ self.module.db_nuke(config)
class postgresqlDBTest(postgresqlOpener, DBTest):
- pass
+ def setUp(self):
+ postgresqlOpener.setUp(self)
+ DBTest.setUp(self)
+
+ def tearDown(self):
+ DBTest.tearDown(self)
+ postgresqlOpener.tearDown(self)
class postgresqlROTest(postgresqlOpener, ROTest):
- pass
+ def setUp(self):
+ postgresqlOpener.setUp(self)
+ ROTest.setUp(self)
+
+ def tearDown(self):
+ ROTest.tearDown(self)
+ postgresqlOpener.tearDown(self)
class postgresqlSchemaTest(postgresqlOpener, SchemaTest):
- pass
+ def setUp(self):
+ postgresqlOpener.setUp(self)
+ SchemaTest.setUp(self)
-class postgresqlClassicInitTest(ClassicInitTest):
+ def tearDown(self):
+ SchemaTest.tearDown(self)
+ postgresqlOpener.tearDown(self)
+
+class postgresqlClassicInitTest(postgresqlOpener, ClassicInitTest):
backend = 'postgresql'
+ def setUp(self):
+ postgresqlOpener.setUp(self)
+ ClassicInitTest.setUp(self)
+
+ def tearDown(self):
+ ClassicInitTest.tearDown(self)
+ postgresqlOpener.tearDown(self)
+
+from session_common import RDBMSTest
+class postgresqlSessionTest(postgresqlOpener, RDBMSTest):
+ def setUp(self):
+ postgresqlOpener.setUp(self)
+ RDBMSTest.setUp(self)
+ def tearDown(self):
+ RDBMSTest.tearDown(self)
+ postgresqlOpener.tearDown(self)
def test_suite():
suite = unittest.TestSuite()
- if not hasattr(backends, 'postgresql'):
+ if not have_backend('postgresql'):
+ print "Skipping postgresql tests"
return suite
- from roundup.backends import postgresql
- try:
- # Check if we can run postgresql tests
- import psycopg
- db = postgresql.Database(nodbconfig, 'admin')
- db.conn.select_db(config.POSTGRESQL_DBNAME)
- db.sql("SHOW TABLES");
- tables = db.sql_fetchall()
- if tables:
- # Database should be empty. We don't dare to delete any data
- raise DatabaseError, "(Database %s contains tables)"%\
- config.POSTGRESQL_DBNAME
- db.sql("DROP DATABASE %s" % config.POSTGRESQL_DBNAME)
- db.sql("CREATE DATABASE %s" % config.POSTGRESQL_DBNAME)
- db.close()
- except (psycopg.ProgrammingError, DatabaseError), msg:
- print "Skipping postgresql tests (%s)"%msg
- else:
- print 'Including postgresql tests'
- suite.addTest(unittest.makeSuite(postgresqlDBTest))
- suite.addTest(unittest.makeSuite(postgresqlROTest))
- suite.addTest(unittest.makeSuite(postgresqlSchemaTest))
- suite.addTest(unittest.makeSuite(postgresqlClassicInitTest))
+ # make sure we start with a clean slate
+ if postgresqlOpener.module.db_exists(config):
+ postgresqlOpener.module.db_nuke(config, 1)
+
+ # TODO: Check if we can run postgresql tests
+ print 'Including postgresql tests'
+ suite.addTest(unittest.makeSuite(postgresqlDBTest))
+ suite.addTest(unittest.makeSuite(postgresqlROTest))
+ suite.addTest(unittest.makeSuite(postgresqlSchemaTest))
+ suite.addTest(unittest.makeSuite(postgresqlClassicInitTest))
+ suite.addTest(unittest.makeSuite(postgresqlSessionTest))
return suite
+# vim: set et sts=4 sw=4 :