Skip to content

Commit df3893a

Browse files
committed
Update tests to work with py.test
py.test searches for any class that looks like a TestCase in the test directory and tries to run them as tests. Some of the classes that inherit TestCase are not meant to be run and are only intended to be "helper classes". Only the tests of the classes that inherit the "helper classes" should be run. If we convert these "helper classes" to be "mixins" py.test should not pick them up.
1 parent 3ffdb90 commit df3893a

File tree

12 files changed

+122
-55
lines changed

12 files changed

+122
-55
lines changed

test/db_test_base.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ def setupSchema(db, create, module):
121121
# nosy tests require this
122122
db.security.addPermissionToRole('User', 'View', 'msg')
123123

124-
class MyTestCase(unittest.TestCase):
124+
125+
class MyTestCase(object):
125126
def tearDown(self):
126127
if hasattr(self, 'db'):
127128
self.db.close()
@@ -2463,7 +2464,7 @@ def testFilteringTransitiveLinkCache(self):
24632464
ae (result, ['4', '5', '6', '7', '8', '1', '2', '3'])
24642465

24652466

2466-
class ClassicInitBase(unittest.TestCase):
2467+
class ClassicInitBase(object):
24672468
count = 0
24682469
db = None
24692470

test/session_common.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
from db_test_base import config
44

5-
class SessionTest(unittest.TestCase):
5+
6+
class SessionTest(object):
67
def setUp(self):
78
# remove previous test, ignore errors
89
if os.path.exists(config.DATABASE):

test/test_anydbm.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,29 @@ class anydbmOpener:
2727
def nuke_database(self):
2828
shutil.rmtree(config.DATABASE)
2929

30-
class anydbmDBTest(anydbmOpener, DBTest):
30+
31+
class anydbmDBTest(anydbmOpener, DBTest, unittest.TestCase):
3132
pass
3233

33-
class anydbmROTest(anydbmOpener, ROTest):
34+
35+
class anydbmROTest(anydbmOpener, ROTest, unittest.TestCase):
3436
pass
3537

36-
class anydbmSchemaTest(anydbmOpener, SchemaTest):
38+
39+
class anydbmSchemaTest(anydbmOpener, SchemaTest, unittest.TestCase):
3740
pass
3841

39-
class anydbmClassicInitTest(ClassicInitTest):
42+
43+
class anydbmClassicInitTest(ClassicInitTest, unittest.TestCase):
4044
backend = 'anydbm'
4145

42-
class anydbmHTMLItemTest(HTMLItemTest):
46+
47+
class anydbmHTMLItemTest(HTMLItemTest, unittest.TestCase):
4348
backend = 'anydbm'
4449

50+
4551
from session_common import DBMTest
46-
class anydbmSessionTest(anydbmOpener, DBMTest):
52+
class anydbmSessionTest(anydbmOpener, DBMTest, unittest.TestCase):
4753
pass
4854

4955
def test_suite():

test/test_indexer.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ def setUp(self):
149149
def tearDown(self):
150150
shutil.rmtree('test-index')
151151

152-
class RDBMSIndexerTest(IndexerTest):
152+
153+
class RDBMSIndexerTest(object):
153154
def setUp(self):
154155
# remove previous test, ignore errors
155156
if os.path.exists(config.DATABASE):
@@ -162,23 +163,26 @@ def tearDown(self):
162163
if os.path.exists(config.DATABASE):
163164
shutil.rmtree(config.DATABASE)
164165

165-
class postgresqlIndexerTest(postgresqlOpener, RDBMSIndexerTest):
166+
167+
class postgresqlIndexerTest(postgresqlOpener, RDBMSIndexerTest, IndexerTest):
166168
def setUp(self):
167169
postgresqlOpener.setUp(self)
168170
RDBMSIndexerTest.setUp(self)
169171
def tearDown(self):
170172
RDBMSIndexerTest.tearDown(self)
171173
postgresqlOpener.tearDown(self)
172174

173-
class mysqlIndexerTest(mysqlOpener, RDBMSIndexerTest):
175+
176+
class mysqlIndexerTest(mysqlOpener, RDBMSIndexerTest, IndexerTest):
174177
def setUp(self):
175178
mysqlOpener.setUp(self)
176179
RDBMSIndexerTest.setUp(self)
177180
def tearDown(self):
178181
RDBMSIndexerTest.tearDown(self)
179182
mysqlOpener.tearDown(self)
180183

181-
class sqliteIndexerTest(sqliteOpener, RDBMSIndexerTest):
184+
185+
class sqliteIndexerTest(sqliteOpener, RDBMSIndexerTest, IndexerTest):
182186
pass
183187

184188
def test_suite():

test/test_jinja2.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ class TestCase_Zero(unittest.TestCase):
2020
def test_zero(self):
2121
self.assertEqual(True, True)
2222

23-
class TestCase(unittest.TestCase):
23+
24+
class Jinja2Test(object):
2425
"""Sets up and tears down an instance with database contents.
2526
2627
Setup and teardown modelled after the use of db_test_base
@@ -48,6 +49,9 @@ def test_zero(self):
4849
pass
4950

5051

52+
class anydbmJinja2Test(Jinja2Test, unittest.TestCase):
53+
backend = 'anydbm'
54+
5155

5256
def test_suite():
5357
suite = unittest.TestSuite()
@@ -58,10 +62,7 @@ def test_suite():
5862
# backends will keep the test focussed enough to be useful for the used
5963
# computing time. Would be okay to change in the future.
6064
# for l in list_backends():
61-
for l in ['anydbm']:
62-
dct = dict(backend = l)
63-
subcls = type(TestCase)('TestCase_%s'%l, (TestCase,), dct)
64-
suite.addTest(unittest.makeSuite(subcls))
65+
suite.addTest(unittest.makeSuite(anydbmJinja2Test))
6566

6667
return suite
6768

test/test_mailgw.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@ def compareStrings(self, s2, s1, replace={}):
141141

142142
from roundup.hyperdb import String
143143

144-
class MailgwTestAbstractBase(unittest.TestCase, DiffHelper):
144+
145+
class MailgwTestAbstractBase(DiffHelper):
145146
count = 0
146147
schema = 'classic'
147148
def setUp(self):
@@ -233,7 +234,7 @@ def testEmptyMessage(self):
233234
self.assertEqual(self.db.issue.get(nodeid, 'tx_Source'), 'email')
234235

235236

236-
class MailgwTestCase(MailgwTestAbstractBase):
237+
class MailgwTestCase(MailgwTestAbstractBase, unittest.TestCase):
237238

238239
def testMessageWithFromInIt(self):
239240
nodeid = self._handle_mail('''Content-Type: text/plain;
@@ -3261,7 +3262,8 @@ def testForwardedMessageAttachment(self):
32613262
fileid = self.db.msg.get(msgid, 'files')[0]
32623263
self.assertEqual(self.db.file.get(fileid, 'type'), 'message/rfc822')
32633264

3264-
class MailgwPGPTestCase(MailgwTestAbstractBase):
3265+
3266+
class MailgwPGPTestCase(MailgwTestAbstractBase, unittest.TestCase):
32653267
pgphome = gpgmelib.pgphome
32663268
def setUp(self):
32673269
MailgwTestAbstractBase.setUp(self)

test/test_memorydb.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,23 @@ def nukeAndCreate(self):
3333
self.db = self.module.Database(config, 'admin')
3434
setupSchema(self.db, 0, self.module)
3535

36-
class memorydbDBTest(memorydbOpener, DBTest):
36+
37+
class memorydbDBTest(memorydbOpener, DBTest, unittest.TestCase):
3738
pass
3839

39-
class memorydbROTest(memorydbOpener, ROTest):
40+
41+
class memorydbROTest(memorydbOpener, ROTest, unittest.TestCase):
4042
def setUp(self):
4143
self.db = self.module.Database(config)
4244
setupSchema(self.db, 0, self.module)
4345

44-
class memorydbSchemaTest(memorydbOpener, SchemaTest):
46+
47+
class memorydbSchemaTest(memorydbOpener, SchemaTest, unittest.TestCase):
4548
pass
4649

50+
4751
from session_common import DBMTest
48-
class memorydbSessionTest(memorydbOpener, DBMTest):
52+
class memorydbSessionTest(memorydbOpener, DBMTest, unittest.TestCase):
4953
def setUp(self):
5054
self.db = self.module.Database(config, 'admin')
5155
setupSchema(self.db, 1, self.module)

test/test_mysql.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,22 +38,26 @@ def tearDown(self):
3838
def nuke_database(self):
3939
self.module.db_nuke(config)
4040

41-
class mysqlDBTest(mysqlOpener, DBTest):
41+
42+
class mysqlDBTest(mysqlOpener, DBTest, unittest.TestCase):
4243
def setUp(self):
4344
mysqlOpener.setUp(self)
4445
DBTest.setUp(self)
4546

46-
class mysqlROTest(mysqlOpener, ROTest):
47+
48+
class mysqlROTest(mysqlOpener, ROTest, unittest.TestCase):
4749
def setUp(self):
4850
mysqlOpener.setUp(self)
4951
ROTest.setUp(self)
5052

51-
class mysqlSchemaTest(mysqlOpener, SchemaTest):
53+
54+
class mysqlSchemaTest(mysqlOpener, SchemaTest, unittest.TestCase):
5255
def setUp(self):
5356
mysqlOpener.setUp(self)
5457
SchemaTest.setUp(self)
5558

56-
class mysqlClassicInitTest(mysqlOpener, ClassicInitTest):
59+
60+
class mysqlClassicInitTest(mysqlOpener, ClassicInitTest, unittest.TestCase):
5761
backend = 'mysql'
5862
def setUp(self):
5963
mysqlOpener.setUp(self)
@@ -62,7 +66,8 @@ def tearDown(self):
6266
ClassicInitTest.tearDown(self)
6367
self.nuke_database()
6468

65-
class mysqlConcurrencyTest(mysqlOpener, ConcurrentDBTest):
69+
70+
class mysqlConcurrencyTest(mysqlOpener, ConcurrentDBTest, unittest.TestCase):
6671
backend = 'mysql'
6772
def setUp(self):
6873
mysqlOpener.setUp(self)
@@ -71,7 +76,8 @@ def tearDown(self):
7176
ConcurrentDBTest.tearDown(self)
7277
self.nuke_database()
7378

74-
class mysqlHTMLItemTest(mysqlOpener, HTMLItemTest):
79+
80+
class mysqlHTMLItemTest(mysqlOpener, HTMLItemTest, unittest.TestCase):
7581
backend = 'mysql'
7682
def setUp(self):
7783
mysqlOpener.setUp(self)
@@ -80,7 +86,8 @@ def tearDown(self):
8086
HTMLItemTest.tearDown(self)
8187
self.nuke_database()
8288

83-
class mysqlFilterCacheTest(mysqlOpener, FilterCacheTest):
89+
90+
class mysqlFilterCacheTest(mysqlOpener, FilterCacheTest, unittest.TestCase):
8491
backend = 'mysql'
8592
def setUp(self):
8693
mysqlOpener.setUp(self)
@@ -89,8 +96,9 @@ def tearDown(self):
8996
FilterCacheTest.tearDown(self)
9097
self.nuke_database()
9198

99+
92100
from session_common import RDBMSTest
93-
class mysqlSessionTest(mysqlOpener, RDBMSTest):
101+
class mysqlSessionTest(mysqlOpener, RDBMSTest, unittest.TestCase):
94102
def setUp(self):
95103
mysqlOpener.setUp(self)
96104
RDBMSTest.setUp(self)

test/test_postgresql.py

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ def nuke_database(self):
3939
# clear out the database - easiest way is to nuke and re-create it
4040
self.module.db_nuke(config)
4141

42-
class postgresqlDBTest(postgresqlOpener, DBTest):
42+
43+
class postgresqlDBTest(postgresqlOpener, DBTest, unittest.TestCase):
4344
def setUp(self):
4445
postgresqlOpener.setUp(self)
4546
DBTest.setUp(self)
@@ -48,7 +49,8 @@ def tearDown(self):
4849
DBTest.tearDown(self)
4950
postgresqlOpener.tearDown(self)
5051

51-
class postgresqlROTest(postgresqlOpener, ROTest):
52+
53+
class postgresqlROTest(postgresqlOpener, ROTest, unittest.TestCase):
5254
def setUp(self):
5355
postgresqlOpener.setUp(self)
5456
ROTest.setUp(self)
@@ -57,7 +59,9 @@ def tearDown(self):
5759
ROTest.tearDown(self)
5860
postgresqlOpener.tearDown(self)
5961

60-
class postgresqlConcurrencyTest(postgresqlOpener, ConcurrentDBTest):
62+
63+
class postgresqlConcurrencyTest(postgresqlOpener, ConcurrentDBTest,
64+
unittest.TestCase):
6165
backend = 'postgresql'
6266
def setUp(self):
6367
postgresqlOpener.setUp(self)
@@ -67,7 +71,9 @@ def tearDown(self):
6771
ConcurrentDBTest.tearDown(self)
6872
postgresqlOpener.tearDown(self)
6973

70-
class postgresqlJournalTest(postgresqlOpener, ClassicInitBase):
74+
75+
class postgresqlJournalTest(postgresqlOpener, ClassicInitBase,
76+
unittest.TestCase):
7177
backend = 'postgresql'
7278
def setUp(self):
7379
postgresqlOpener.setUp(self)
@@ -115,7 +121,9 @@ def testConcurrentRepeatableRead(self):
115121
exc = self.module.TransactionRollbackError
116122
self.assertRaises(exc, self._test_journal, [])
117123

118-
class postgresqlHTMLItemTest(postgresqlOpener, HTMLItemTest):
124+
125+
class postgresqlHTMLItemTest(postgresqlOpener, HTMLItemTest,
126+
unittest.TestCase):
119127
backend = 'postgresql'
120128
def setUp(self):
121129
postgresqlOpener.setUp(self)
@@ -125,7 +133,9 @@ def tearDown(self):
125133
HTMLItemTest.tearDown(self)
126134
postgresqlOpener.tearDown(self)
127135

128-
class postgresqlFilterCacheTest(postgresqlOpener, FilterCacheTest):
136+
137+
class postgresqlFilterCacheTest(postgresqlOpener, FilterCacheTest,
138+
unittest.TestCase):
129139
backend = 'postgresql'
130140
def setUp(self):
131141
postgresqlOpener.setUp(self)
@@ -135,7 +145,8 @@ def tearDown(self):
135145
FilterCacheTest.tearDown(self)
136146
postgresqlOpener.tearDown(self)
137147

138-
class postgresqlSchemaTest(postgresqlOpener, SchemaTest):
148+
149+
class postgresqlSchemaTest(postgresqlOpener, SchemaTest, unittest.TestCase):
139150
def setUp(self):
140151
postgresqlOpener.setUp(self)
141152
SchemaTest.setUp(self)
@@ -144,7 +155,9 @@ def tearDown(self):
144155
SchemaTest.tearDown(self)
145156
postgresqlOpener.tearDown(self)
146157

147-
class postgresqlClassicInitTest(postgresqlOpener, ClassicInitTest):
158+
159+
class postgresqlClassicInitTest(postgresqlOpener, ClassicInitTest,
160+
unittest.TestCase):
148161
backend = 'postgresql'
149162
def setUp(self):
150163
postgresqlOpener.setUp(self)
@@ -154,8 +167,9 @@ def tearDown(self):
154167
ClassicInitTest.tearDown(self)
155168
postgresqlOpener.tearDown(self)
156169

170+
157171
from session_common import RDBMSTest
158-
class postgresqlSessionTest(postgresqlOpener, RDBMSTest):
172+
class postgresqlSessionTest(postgresqlOpener, RDBMSTest, unittest.TestCase):
159173
def setUp(self):
160174
postgresqlOpener.setUp(self)
161175
RDBMSTest.setUp(self)

test/test_security.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
import roundup.password
2525
from db_test_base import setupSchema, MyTestCase, config
2626

27-
class PermissionTest(MyTestCase):
27+
28+
class PermissionTest(MyTestCase, unittest.TestCase):
2829
def setUp(self):
2930
backend = backends.get_backend('anydbm')
3031
# remove previous test, ignore errors

0 commit comments

Comments
 (0)