Skip to content

Commit effae7b

Browse files
committed
TST: Parameterize some compression tests
1 parent 823b5d3 commit effae7b

File tree

1 file changed

+19
-62
lines changed

1 file changed

+19
-62
lines changed

pandas/tests/io/parser/compression.py

+19-62
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
import pandas.util.testing as tm
1313
import pandas.util._test_decorators as td
1414

15+
import gzip
16+
import bz2
17+
lzma = compat.import_lzma()
18+
1519

1620
class CompressionTests(object):
1721

@@ -64,83 +68,36 @@ def test_zip(self):
6468
pytest.raises(zipfile.BadZipfile, self.read_csv,
6569
f, compression='zip')
6670

67-
def test_gzip(self):
68-
import gzip
69-
70-
with open(self.csv1, 'rb') as data_file:
71-
data = data_file.read()
72-
expected = self.read_csv(self.csv1)
73-
74-
with tm.ensure_clean() as path:
75-
tmp = gzip.GzipFile(path, mode='wb')
76-
tmp.write(data)
77-
tmp.close()
78-
79-
result = self.read_csv(path, compression='gzip')
80-
tm.assert_frame_equal(result, expected)
81-
82-
with open(path, 'rb') as f:
83-
result = self.read_csv(f, compression='gzip')
84-
tm.assert_frame_equal(result, expected)
85-
86-
with tm.ensure_clean('test.gz') as path:
87-
tmp = gzip.GzipFile(path, mode='wb')
88-
tmp.write(data)
89-
tmp.close()
90-
result = self.read_csv(path, compression='infer')
91-
tm.assert_frame_equal(result, expected)
92-
93-
def test_bz2(self):
94-
import bz2
71+
@pytest.mark.parametrize('compress_type, compress_method, ext', [
72+
('gzip', gzip.GzipFile, 'gz'),
73+
('bz2', bz2.BZ2File, 'bz2'),
74+
pytest.param('xz', lzma.LZMAFile, 'xz',
75+
marks=td.skip_if_no_lzma)
76+
])
77+
def test_other_compression(self, compress_type, compress_method, ext):
9578

9679
with open(self.csv1, 'rb') as data_file:
9780
data = data_file.read()
9881
expected = self.read_csv(self.csv1)
9982

10083
with tm.ensure_clean() as path:
101-
tmp = bz2.BZ2File(path, mode='wb')
84+
tmp = compress_method(path, mode='wb')
10285
tmp.write(data)
10386
tmp.close()
10487

105-
result = self.read_csv(path, compression='bz2')
88+
result = self.read_csv(path, compression=compress_type)
10689
tm.assert_frame_equal(result, expected)
10790

108-
pytest.raises(ValueError, self.read_csv,
109-
path, compression='bz3')
91+
if compress_type == 'bz2':
92+
pytest.raises(ValueError, self.read_csv,
93+
path, compression='bz3')
11094

11195
with open(path, 'rb') as fin:
112-
result = self.read_csv(fin, compression='bz2')
113-
tm.assert_frame_equal(result, expected)
114-
115-
with tm.ensure_clean('test.bz2') as path:
116-
tmp = bz2.BZ2File(path, mode='wb')
117-
tmp.write(data)
118-
tmp.close()
119-
result = self.read_csv(path, compression='infer')
120-
tm.assert_frame_equal(result, expected)
121-
122-
@td.skip_if_no_lzma
123-
def test_xz(self):
124-
lzma = compat.import_lzma()
125-
126-
with open(self.csv1, 'rb') as data_file:
127-
data = data_file.read()
128-
expected = self.read_csv(self.csv1)
129-
130-
with tm.ensure_clean() as path:
131-
tmp = lzma.LZMAFile(path, mode='wb')
132-
tmp.write(data)
133-
tmp.close()
134-
135-
result = self.read_csv(path, compression='xz')
136-
tm.assert_frame_equal(result, expected)
137-
138-
with open(path, 'rb') as f:
139-
result = self.read_csv(f, compression='xz')
96+
result = self.read_csv(fin, compression=compress_type)
14097
tm.assert_frame_equal(result, expected)
14198

142-
with tm.ensure_clean('test.xz') as path:
143-
tmp = lzma.LZMAFile(path, mode='wb')
99+
with tm.ensure_clean('test.{}'.format(ext)) as path:
100+
tmp = compress_method(path, mode='wb')
144101
tmp.write(data)
145102
tmp.close()
146103
result = self.read_csv(path, compression='infer')

0 commit comments

Comments
 (0)