Mercurial > p > roundup > code
comparison test/test_db.py @ 1492:2fc7d4a8c9e7
fixed sqlite rollback/caching bug [SF#689383]
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Thu, 06 Mar 2003 06:03:51 +0000 |
| parents | f5f60c75a458 |
| children | c101d2ff5a20 |
comparison
equal
deleted
inserted
replaced
| 1490:0638abfa13ab | 1492:2fc7d4a8c9e7 |
|---|---|
| 13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | 13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
| 14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" | 14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
| 15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, | 15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
| 16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. | 16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
| 17 # | 17 # |
| 18 # $Id: test_db.py,v 1.73 2003-03-03 21:05:19 richard Exp $ | 18 # $Id: test_db.py,v 1.74 2003-03-06 06:03:51 richard Exp $ |
| 19 | 19 |
| 20 import unittest, os, shutil, time | 20 import unittest, os, shutil, time |
| 21 | 21 |
| 22 from roundup.hyperdb import String, Password, Link, Multilink, Date, \ | 22 from roundup.hyperdb import String, Password, Link, Multilink, Date, \ |
| 23 Interval, DatabaseError, Boolean, Number, Node | 23 Interval, DatabaseError, Boolean, Number, Node |
| 323 self.assertNotEqual(num_files, num_files2) | 323 self.assertNotEqual(num_files, num_files2) |
| 324 self.db.file.create(name="test", type="text/plain", content="hi") | 324 self.db.file.create(name="test", type="text/plain", content="hi") |
| 325 self.db.rollback() | 325 self.db.rollback() |
| 326 self.assertNotEqual(num_files, self.db.numfiles()) | 326 self.assertNotEqual(num_files, self.db.numfiles()) |
| 327 self.assertEqual(num_files2, self.db.numfiles()) | 327 self.assertEqual(num_files2, self.db.numfiles()) |
| 328 | |
| 329 # rollback / cache interaction | |
| 330 name1 = self.db.user.get('1', 'username') | |
| 331 self.db.user.set('1', username = name1+name1) | |
| 332 # get the prop so the info's forced into the cache (if there is one) | |
| 333 self.db.user.get('1', 'username') | |
| 334 self.db.rollback() | |
| 335 name2 = self.db.user.get('1', 'username') | |
| 336 self.assertEqual(name1, name2) | |
| 328 | 337 |
| 329 def testDestroyNoJournalling(self): | 338 def testDestroyNoJournalling(self): |
| 330 self.innerTestDestroy(klass=self.db.session) | 339 self.innerTestDestroy(klass=self.db.session) |
| 331 | 340 |
| 332 def testDestroyJournalling(self): | 341 def testDestroyJournalling(self): |
| 651 def testFilteringMany(self): | 660 def testFilteringMany(self): |
| 652 ae, filt = self.filteringSetup() | 661 ae, filt = self.filteringSetup() |
| 653 ae(filt(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)), | 662 ae(filt(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)), |
| 654 ['3']) | 663 ['3']) |
| 655 | 664 |
| 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 | 665 |
| 677 # TODO test auditors and reactors | 666 # TODO test auditors and reactors |
| 678 | 667 |
| 679 class anydbmReadOnlyDBTestCase(MyTestCase): | 668 class anydbmReadOnlyDBTestCase(MyTestCase): |
| 680 def setUp(self): | 669 def setUp(self): |
