Mercurial > p > roundup > code
comparison test/test_db.py @ 1486:f5f60c75a458
added test for error in sqlite backend, and fixed *dbm backend error
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Mon, 03 Mar 2003 21:05:19 +0000 |
| parents | 405e91b5be46 |
| children | 2fc7d4a8c9e7 |
comparison
equal
deleted
inserted
replaced
| 1485:8a1975bdde6e | 1486:f5f60c75a458 |
|---|---|
| 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.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 $ |
| 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 | 23 Interval, DatabaseError, Boolean, Number, Node |
| 24 from roundup import date, password | 24 from roundup import date, password |
| 25 from roundup.indexer import Indexer | 25 from roundup.indexer import Indexer |
| 26 | 26 |
| 27 def setupSchema(db, create, module): | 27 def setupSchema(db, create, module): |
| 28 status = module.Class(db, "status", name=String()) | 28 status = module.Class(db, "status", name=String()) |
| 651 def testFilteringMany(self): | 651 def testFilteringMany(self): |
| 652 ae, filt = self.filteringSetup() | 652 ae, filt = self.filteringSetup() |
| 653 ae(filt(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)), | 653 ae(filt(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)), |
| 654 ['3']) | 654 ['3']) |
| 655 | 655 |
| 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 | |
| 656 # TODO test auditors and reactors | 677 # TODO test auditors and reactors |
| 657 | 678 |
| 658 class anydbmReadOnlyDBTestCase(MyTestCase): | 679 class anydbmReadOnlyDBTestCase(MyTestCase): |
| 659 def setUp(self): | 680 def setUp(self): |
| 660 from roundup.backends import anydbm | 681 from roundup.backends import anydbm |
| 893 ] | 914 ] |
| 894 # return unittest.TestSuite(l) | 915 # return unittest.TestSuite(l) |
| 895 | 916 |
| 896 from roundup import backends | 917 from roundup import backends |
| 897 p = [] | 918 p = [] |
| 898 if hasattr(backends, 'mysql'): | 919 # if hasattr(backends, 'mysql'): |
| 899 from roundup.backends import mysql | 920 # from roundup.backends import mysql |
| 900 try: | 921 # try: |
| 901 # Check if we can run mysql tests | 922 # # Check if we can run mysql tests |
| 902 import MySQLdb | 923 # import MySQLdb |
| 903 db = mysql.Database(nodbconfig, 'admin') | 924 # db = mysql.Database(nodbconfig, 'admin') |
| 904 db.conn.select_db(config.MYSQL_DBNAME) | 925 # db.conn.select_db(config.MYSQL_DBNAME) |
| 905 db.sql("SHOW TABLES"); | 926 # db.sql("SHOW TABLES"); |
| 906 tables = db.sql_fetchall() | 927 # tables = db.sql_fetchall() |
| 907 if tables: | 928 # if tables: |
| 908 # Database should be empty. We don't dare to delete any data | 929 # # Database should be empty. We don't dare to delete any data |
| 909 raise DatabaseError, "(Database %s contains tables)" % config.MYSQL_DBNAME | 930 # raise DatabaseError, "(Database %s contains tables)" % config.MYSQL_DBNAME |
| 910 db.sql("DROP DATABASE %s" % config.MYSQL_DBNAME) | 931 # db.sql("DROP DATABASE %s" % config.MYSQL_DBNAME) |
| 911 db.sql("CREATE DATABASE %s" % config.MYSQL_DBNAME) | 932 # db.sql("CREATE DATABASE %s" % config.MYSQL_DBNAME) |
| 912 db.close() | 933 # db.close() |
| 913 except (MySQLdb.ProgrammingError, DatabaseError), msg: | 934 # except (MySQLdb.ProgrammingError, DatabaseError), msg: |
| 914 print "Warning! Mysql tests will not be performed", msg | 935 # print "Warning! Mysql tests will not be performed", msg |
| 915 print "See doc/mysql.txt for more details." | 936 # print "See doc/mysql.txt for more details." |
| 916 else: | 937 # else: |
| 917 p.append('mysql') | 938 # p.append('mysql') |
| 918 l.append(unittest.makeSuite(mysqlDBTestCase, 'test')) | 939 # l.append(unittest.makeSuite(mysqlDBTestCase, 'test')) |
| 919 l.append(unittest.makeSuite(mysqlReadOnlyDBTestCase, 'test')) | 940 # l.append(unittest.makeSuite(mysqlReadOnlyDBTestCase, 'test')) |
| 920 #return unittest.TestSuite(l) | 941 #return unittest.TestSuite(l) |
| 921 | 942 |
| 922 if hasattr(backends, 'gadfly'): | 943 if hasattr(backends, 'gadfly'): |
| 923 p.append('gadfly') | 944 p.append('gadfly') |
| 924 l.append(unittest.makeSuite(gadflyDBTestCase, 'test')) | 945 l.append(unittest.makeSuite(gadflyDBTestCase, 'test')) |
