annotate tests/test_MySQLdb_capabilities.py @ 48:f4fd8c20511c MySQLdb

Read a default file in the test setUp. Since Python 2.4, int() will return longs if needed so make all long references int as in Python 3.0 there is no more long due to int/long unification (new ints are old longs).
author adustman
date Sun, 22 Feb 2009 20:01:31 +0000
parents d55bfb1a4701
children 7fe4b0b37e8e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
1 #!/usr/bin/env python
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
2 import capabilities
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
3 import unittest
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
4 import MySQLdb
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
5 import warnings
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
6
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
7 warnings.filterwarnings('error')
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
8
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
9 class test_MySQLdb(capabilities.DatabaseTest):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
10
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
11 db_module = MySQLdb
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
12 connect_args = ()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
13 connect_kwargs = dict(db='test', read_default_file='~/.my.cnf',
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
14 charset='utf8', sql_mode="ANSI,STRICT_TRANS_TABLES,TRADITIONAL")
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
15 create_table_extra = "ENGINE=INNODB CHARACTER SET UTF8"
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
16 leak_test = False
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
17
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
18 def quote_identifier(self, ident):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
19 return "`%s`" % ident
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
20
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
21 def test_TIME(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
22 from datetime import timedelta
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
23 def generator(row,col):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
24 return timedelta(0, row*8000)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
25 self.check_data_integrity(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
26 ('col1 TIME',),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
27 generator)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
28
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
29 def test_TINYINT(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
30 # Number data
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
31 def generator(row,col):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
32 v = (row*row) % 256
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
33 if v > 127:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
34 v = v-256
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
35 return v
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
36 self.check_data_integrity(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
37 ('col1 TINYINT',),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
38 generator)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
39
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
40 def test_stored_procedures(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
41 db = self.connection
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
42 c = self.cursor
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
43 try:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
44 self.create_table(('pos INT', 'tree CHAR(20)'))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
45 c.executemany("INSERT INTO %s (pos,tree) VALUES (%%s,%%s)" % self.table,
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
46 list(enumerate('ash birch cedar larch pine'.split())))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
47 db.commit()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
48
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
49 c.execute("""
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
50 CREATE PROCEDURE test_sp(IN t VARCHAR(255))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
51 BEGIN
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
52 SELECT pos FROM %s WHERE tree = t;
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
53 END
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
54 """ % self.table)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
55 db.commit()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
56
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
57 c.callproc('test_sp', ('larch',))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
58 rows = c.fetchall()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
59 self.assertEquals(len(rows), 1)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
60 self.assertEquals(rows[0][0], 3)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
61 c.nextset()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
62 finally:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
63 c.execute("DROP PROCEDURE IF EXISTS test_sp")
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
64 c.execute('drop table %s' % (self.table))
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
65
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
66 def test_small_CHAR(self):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
67 # Character data
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
68 def generator(row,col):
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
69 i = (row*col+62)%256
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
70 if i == 62: return ''
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
71 if i == 63: return None
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
72 return chr(i)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
73 self.check_data_integrity(
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
74 ('col1 char(1)','col2 char(1)'),
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
75 generator)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
76
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
77 if __name__ == '__main__':
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
78 if test_MySQLdb.leak_test:
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
79 import gc
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
80 gc.enable()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
81 gc.set_debug(gc.DEBUG_LEAK)
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
82 unittest.main()
d55bfb1a4701 Tons of changes from major refactoring/cleanup. This is all really broken
adustman
parents:
diff changeset
83 print '''"Huh-huh, he said 'unit'." -- Butthead'''