Skip to content

Commit 76a106b

Browse files
author
Richard Jones
committed
added test for error in sqlite backend, and fixed *dbm backend error
1 parent 3bce1b5 commit 76a106b

File tree

2 files changed

+51
-30
lines changed

2 files changed

+51
-30
lines changed

roundup/backends/back_anydbm.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717
#
18-
#$Id: back_anydbm.py,v 1.107 2003-02-28 03:33:46 richard Exp $
18+
#$Id: back_anydbm.py,v 1.108 2003-03-03 21:05:17 richard Exp $
1919
'''
2020
This module defines a backend that saves the hyperdatabase in a database
2121
chosen by anydbm. It is guaranteed to always be available in python
@@ -1537,16 +1537,16 @@ def getnodeids(self, db=None):
15371537
res = []
15381538

15391539
# start off with the new nodes
1540-
if self.db.newnodes.has_key(classname):
1541-
res += self.db.newnodes[classname].keys()
1540+
if self.db.newnodes.has_key(self.classname):
1541+
res += self.db.newnodes[self.classname].keys()
15421542

15431543
if db is None:
1544-
db = self.db.getclassdb(classname)
1544+
db = self.db.getclassdb(self.classname)
15451545
res = res + db.keys()
15461546

15471547
# remove the uncommitted, destroyed nodes
1548-
if self.db.destroyednodes.has_key(classname):
1549-
for nodeid in self.db.destroyednodes[classname].keys():
1548+
if self.db.destroyednodes.has_key(self.classname):
1549+
for nodeid in self.db.destroyednodes[self.classname].keys():
15501550
if db.has_key(nodeid):
15511551
res.remove(nodeid)
15521552

test/test_db.py

Lines changed: 45 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717
#
18-
# $Id: test_db.py,v 1.72 2003-02-27 11:07:39 richard Exp $
18+
# $Id: test_db.py,v 1.73 2003-03-03 21:05:19 richard Exp $
1919

2020
import unittest, os, shutil, time
2121

2222
from roundup.hyperdb import String, Password, Link, Multilink, Date, \
23-
Interval, DatabaseError, Boolean, Number
23+
Interval, DatabaseError, Boolean, Number, Node
2424
from roundup import date, password
2525
from roundup.indexer import Indexer
2626

@@ -653,6 +653,27 @@ def testFilteringMany(self):
653653
ae(filt(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)),
654654
['3'])
655655

656+
def testNode1(self):
657+
node1 = self.db.user.getnode('1')
658+
name = node1.username
659+
self.db.user.set('1', username = name+name)
660+
name1 = node1.username
661+
self.db.rollback()
662+
node2 = self.db.user.getnode('1')
663+
self.assertEqual(name, node1.username)
664+
self.assertEqual(name, node2.username)
665+
666+
def testNode2(self):
667+
node1 = Node(self.db.user, '1')
668+
name = node1.username
669+
self.db.user.set('1', username = name+name)
670+
name1 = node1.username
671+
self.db.rollback()
672+
node2 = Node(self.db.user, '1')
673+
self.assertEqual(name, node1.username)
674+
self.assertEqual(name, node2.username)
675+
676+
656677
# TODO test auditors and reactors
657678

658679
class anydbmReadOnlyDBTestCase(MyTestCase):
@@ -895,28 +916,28 @@ def suite():
895916

896917
from roundup import backends
897918
p = []
898-
if hasattr(backends, 'mysql'):
899-
from roundup.backends import mysql
900-
try:
901-
# Check if we can run mysql tests
902-
import MySQLdb
903-
db = mysql.Database(nodbconfig, 'admin')
904-
db.conn.select_db(config.MYSQL_DBNAME)
905-
db.sql("SHOW TABLES");
906-
tables = db.sql_fetchall()
907-
if tables:
908-
# Database should be empty. We don't dare to delete any data
909-
raise DatabaseError, "(Database %s contains tables)" % config.MYSQL_DBNAME
910-
db.sql("DROP DATABASE %s" % config.MYSQL_DBNAME)
911-
db.sql("CREATE DATABASE %s" % config.MYSQL_DBNAME)
912-
db.close()
913-
except (MySQLdb.ProgrammingError, DatabaseError), msg:
914-
print "Warning! Mysql tests will not be performed", msg
915-
print "See doc/mysql.txt for more details."
916-
else:
917-
p.append('mysql')
918-
l.append(unittest.makeSuite(mysqlDBTestCase, 'test'))
919-
l.append(unittest.makeSuite(mysqlReadOnlyDBTestCase, 'test'))
919+
# if hasattr(backends, 'mysql'):
920+
# from roundup.backends import mysql
921+
# try:
922+
# # Check if we can run mysql tests
923+
# import MySQLdb
924+
# db = mysql.Database(nodbconfig, 'admin')
925+
# db.conn.select_db(config.MYSQL_DBNAME)
926+
# db.sql("SHOW TABLES");
927+
# tables = db.sql_fetchall()
928+
# if tables:
929+
# # Database should be empty. We don't dare to delete any data
930+
# raise DatabaseError, "(Database %s contains tables)" % config.MYSQL_DBNAME
931+
# db.sql("DROP DATABASE %s" % config.MYSQL_DBNAME)
932+
# db.sql("CREATE DATABASE %s" % config.MYSQL_DBNAME)
933+
# db.close()
934+
# except (MySQLdb.ProgrammingError, DatabaseError), msg:
935+
# print "Warning! Mysql tests will not be performed", msg
936+
# print "See doc/mysql.txt for more details."
937+
# else:
938+
# p.append('mysql')
939+
# l.append(unittest.makeSuite(mysqlDBTestCase, 'test'))
940+
# l.append(unittest.makeSuite(mysqlReadOnlyDBTestCase, 'test'))
920941
#return unittest.TestSuite(l)
921942

922943
if hasattr(backends, 'gadfly'):

0 commit comments

Comments
 (0)