Skip to content

Commit e83645a

Browse files
author
Richard Jones
committed
make some more memorydb tests pass
1 parent 44cd881 commit e83645a

File tree

5 files changed

+32
-12
lines changed

5 files changed

+32
-12
lines changed

roundup/backends/back_anydbm.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -784,6 +784,8 @@ def create(self, **propvalues):
784784
These operations trigger detectors and can be vetoed. Attempts
785785
to modify the "creation" or "activity" properties cause a KeyError.
786786
"""
787+
if self.db.journaltag is None:
788+
raise hyperdb.DatabaseError, _('Database open read-only')
787789
self.fireAuditors('create', None, propvalues)
788790
newid = self.create_inner(**propvalues)
789791
self.fireReactors('create', newid, None)
@@ -1045,6 +1047,9 @@ class or a KeyError is raised.
10451047
These operations trigger detectors and can be vetoed. Attempts
10461048
to modify the "creation" or "activity" properties cause a KeyError.
10471049
"""
1050+
if self.db.journaltag is None:
1051+
raise hyperdb.DatabaseError, _('Database open read-only')
1052+
10481053
self.fireAuditors('set', nodeid, propvalues)
10491054
oldvalues = copy.deepcopy(self.db.getnode(self.classname, nodeid))
10501055
for name,prop in self.getprops(protected=0).items():
@@ -1390,6 +1395,7 @@ def lookup(self, keyvalue):
13901395
try:
13911396
for nodeid in self.getnodeids(cldb):
13921397
node = self.db.getnode(self.classname, nodeid, cldb)
1398+
print (nodeid, node, node[self.key], keyvalue)
13931399
if node.has_key(self.db.RETIRED_FLAG):
13941400
continue
13951401
if not node.has_key(self.key):

roundup/backends/blobfiles.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,10 @@ def filename(self, classname, nodeid, property=None, create=0):
304304
# file just ain't there
305305
raise IOError('content file for %s not found'%filename)
306306

307+
def filesize(self, classname, nodeid, property=None, create=0):
308+
filename = self.filename(classname, nodeid, property, create)
309+
return os.path.getsize(filename)
310+
307311
def storefile(self, classname, nodeid, property, content):
308312
"""Store the content of the file in the database. The property may be
309313
None, in which case the filename does not indicate which property

roundup/roundupdb.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,8 +361,7 @@ def send_message(self, nodeid, msgid, note, sendto, from_address=None,
361361
if msgid :
362362
for fileid in messages.get(msgid, 'files') :
363363
# check the attachment size
364-
filename = self.db.filename('file', fileid, None)
365-
filesize = os.path.getsize(filename)
364+
filesize = self.db.filesize('file', fileid, None)
366365
if filesize <= self.db.config.NOSY_MAX_ATTACHMENT_SIZE:
367366
message_files.append(fileid)
368367
else:

test/db_test_base.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1855,14 +1855,14 @@ def dummy_snd(s, to, msg, res=res) :
18551855
db.issue.nosymessage(i, m, {})
18561856
mail_msg = str(res["mail_msg"])
18571857
self.assertEqual(res["mail_to"], ["[email protected]"])
1858-
self.failUnless("From: admin" in mail_msg)
1859-
self.failUnless("Subject: [issue1] spam" in mail_msg)
1860-
self.failUnless("New submission from admin" in mail_msg)
1861-
self.failUnless("one two" in mail_msg)
1862-
self.failIf("File 'test1.txt' not attached" in mail_msg)
1863-
self.failUnless(base64.encodestring("xxx").rstrip() in mail_msg)
1864-
self.failUnless("File 'test2.txt' not attached" in mail_msg)
1865-
self.failIf(base64.encodestring("yyy").rstrip() in mail_msg)
1858+
self.assert_("From: admin" in mail_msg)
1859+
self.assert_("Subject: [issue1] spam" in mail_msg)
1860+
self.assert_("New submission from admin" in mail_msg)
1861+
self.assert_("one two" in mail_msg)
1862+
self.assert_("File 'test1.txt' not attached" not in mail_msg)
1863+
self.assert_(base64.encodestring("xxx").rstrip() in mail_msg)
1864+
self.assert_("File 'test2.txt' not attached" in mail_msg)
1865+
self.assert_(base64.encodestring("yyy").rstrip() not in mail_msg)
18661866
finally :
18671867
Mailer.smtp_send = backup
18681868

test/memorydb.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,9 @@ def filename(self, classname, nodeid, property=None, create=0):
183183
shutil.copyfile(__file__, __file__+'.dummy')
184184
return __file__+'.dummy'
185185

186+
def filesize(self, classname, nodeid, property=None, create=0):
187+
return len(self.getnode(classname, nodeid)[property or 'content'])
188+
186189
def post_init(self):
187190
pass
188191

@@ -269,6 +272,8 @@ def getclassdb(self, classname):
269272
def newid(self, classname):
270273
self.ids[classname] += 1
271274
return str(self.ids[classname])
275+
def setid(self, classname, id):
276+
self.ids[classname] = id
272277

273278
#
274279
# Nodes
@@ -282,7 +287,10 @@ def setnode(self, classname, nodeid, node):
282287
def getnode(self, classname, nodeid, db=None):
283288
if db is not None:
284289
return db[nodeid]
285-
return self.getclassdb(classname)[nodeid]
290+
d = self.getclassdb(classname)
291+
if nodeid not in d:
292+
raise IndexError(nodeid)
293+
return d[nodeid]
286294

287295
def destroynode(self, classname, nodeid):
288296
del self.getclassdb(classname)[nodeid]
@@ -328,7 +336,10 @@ def close(self):
328336

329337
class Class(back_anydbm.Class):
330338
def getnodeids(self, db=None, retired=None):
331-
return self.db.getclassdb(self.classname).keys()
339+
d = self.db.getclassdb(self.classname)
340+
if retired is None:
341+
return d.keys()
342+
return [k for k in d if d[k].get(self.db.RETIRED_FLAG, False) == retired]
332343

333344
class FileClass(back_anydbm.Class):
334345
def __init__(self, db, classname, **properties):

0 commit comments

Comments
 (0)