Mercurial > p > mysql-python > mysqldb-2
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 |
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''' |