Skip to content

Commit 4db1800

Browse files
committed
TST: Create a MySQL database and run MySQL tests on Travis.
1 parent b3e5338 commit 4db1800

File tree

3 files changed

+28
-10
lines changed

3 files changed

+28
-10
lines changed

.travis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ install:
4040
- echo "Waldo2"
4141
- ci/install.sh
4242

43+
before_script:
44+
- mysql -e 'create database pandas_nosetest;'
45+
4346
script:
4447
- echo "Waldo3"
4548
- ci/script.sh

ci/requirements-2.7.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ patsy==0.1.0
1313
html5lib==1.0b2
1414
lxml==3.2.1
1515
scikits.timeseries==0.91.3
16+
MySQL-python==1.2.4

pandas/io/tests/test_sql.py

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ def _check_roundtrip(self, frame):
160160
sql.write_frame(frame, name='test_table', con=self.db)
161161
result = sql.read_frame("select * from test_table", self.db)
162162

163-
# HACK!
163+
# HACK! Change this once indexes are handled properly.
164164
result.index = frame.index
165165

166166
expected = frame
@@ -175,6 +175,8 @@ def _check_roundtrip(self, frame):
175175
expected = frame.copy()
176176
expected.index = Index(range(len(frame2))) + 10
177177
expected.index.name = 'Idx'
178+
print expected.index.names
179+
print result.index.names
178180
tm.assert_frame_equal(expected, result)
179181

180182
def test_tquery(self):
@@ -239,20 +241,27 @@ def test_onecolumn_of_integer(self):
239241
class TestMySQL(unittest.TestCase):
240242

241243
def setUp(self):
244+
_skip_if_no_MySQLdb()
245+
import MySQLdb
242246
try:
243-
import MySQLdb
244-
except ImportError:
245-
raise nose.SkipTest
247+
# Try Travis defaults.
248+
# No real user should allow root access with a blank password.
249+
self.db = MySQLdb.connect(host='localhost', user='root', passwd='',
250+
db='pandas_nosetest')
251+
except:
252+
pass
253+
else:
254+
return
246255
try:
247256
self.db = MySQLdb.connect(read_default_group='pandas')
248-
except MySQLdb.Error, e:
257+
except MySQLdb.ProgrammingError, e:
249258
raise nose.SkipTest(
250-
"Cannot connect to database. "
251259
"Create a group of connection parameters under the heading "
252260
"[pandas] in your system's mysql default file, "
253261
"typically located at ~/.my.cnf or /etc/.my.cnf. ")
254-
except MySQLdb.ProgrammingError, e:
262+
except MySQLdb.Error, e:
255263
raise nose.SkipTest(
264+
"Cannot connect to database. "
256265
"Create a group of connection parameters under the heading "
257266
"[pandas] in your system's mysql default file, "
258267
"typically located at ~/.my.cnf or /etc/.my.cnf. ")
@@ -383,23 +392,28 @@ def _check_roundtrip(self, frame):
383392
sql.write_frame(frame, name='test_table', con=self.db, flavor='mysql')
384393
result = sql.read_frame("select * from test_table", self.db)
385394

386-
# HACK!
395+
# HACK! Change this once indexes are handled properly.
387396
result.index = frame.index
397+
result.index.name = frame.index.name
388398

389399
expected = frame
390400
tm.assert_frame_equal(result, expected)
391401

392402
frame['txt'] = ['a'] * len(frame)
393403
frame2 = frame.copy()
394-
frame2['Idx'] = Index(range(len(frame2))) + 10
404+
index = Index(range(len(frame2))) + 10
405+
frame2['Idx'] = index
395406
drop_sql = "DROP TABLE IF EXISTS test_table2"
396407
cur = self.db.cursor()
397408
cur.execute(drop_sql)
398409
sql.write_frame(frame2, name='test_table2', con=self.db, flavor='mysql')
399410
result = sql.read_frame("select * from test_table2", self.db,
400411
index_col='Idx')
401412
expected = frame.copy()
402-
expected.index = Index(range(len(frame2))) + 10
413+
414+
# HACK! Change this once indexes are handled properly.
415+
expected.index = index
416+
expected.index.names = result.index.names
403417
tm.assert_frame_equal(expected, result)
404418

405419
def test_tquery(self):

0 commit comments

Comments
 (0)