-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathtest_postgresql.py
More file actions
116 lines (94 loc) · 3.87 KB
/
test_postgresql.py
File metadata and controls
116 lines (94 loc) · 3.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#
# Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
# This module is free software, and you may redistribute it and/or modify
# under the same terms as Python, so long as this copyright message and
# disclaimer are retained in their original form.
#
# IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
# OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# 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.12 2004-11-03 01:34:21 richard Exp $
import unittest
from roundup.hyperdb import DatabaseError
from db_test_base import DBTest, ROTest, config, SchemaTest, ClassicInitTest
from roundup.backends import get_backend, have_backend
class postgresqlOpener:
if have_backend('postgresql'):
module = get_backend('postgresql')
def setUp(self):
pass
def tearDown(self):
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):
def setUp(self):
postgresqlOpener.setUp(self)
DBTest.setUp(self)
def tearDown(self):
DBTest.tearDown(self)
postgresqlOpener.tearDown(self)
def testFilteringIntervalSort(self):
# PostgreSQL sorts NULLs differently to other databases (others
# treat it as lower than real values, PG treats it as higher)
ae, filt = self.filteringSetup()
# ascending should sort None, 1:10, 1d
ae(filt(None, {}, ('+','foo'), (None,None)), ['4', '1', '2', '3'])
# descending should sort 1d, 1:10, None
ae(filt(None, {}, ('-','foo'), (None,None)), ['3', '2', '1', '4'])
class postgresqlROTest(postgresqlOpener, ROTest):
def setUp(self):
postgresqlOpener.setUp(self)
ROTest.setUp(self)
def tearDown(self):
ROTest.tearDown(self)
postgresqlOpener.tearDown(self)
class postgresqlSchemaTest(postgresqlOpener, SchemaTest):
def setUp(self):
postgresqlOpener.setUp(self)
SchemaTest.setUp(self)
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 have_backend('postgresql'):
print "Skipping postgresql tests"
return suite
# 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 :