Skip to content

Commit 30d712f

Browse files
reidy-pjreback
authored andcommitted
TST: Parameterize some compression tests (#20337)
1 parent 7ee65bc commit 30d712f

File tree

1 file changed

+22
-62
lines changed

1 file changed

+22
-62
lines changed

pandas/tests/io/parser/compression.py

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

15+
import gzip
16+
import bz2
17+
try:
18+
lzma = compat.import_lzma()
19+
except ImportError:
20+
lzma = None
21+
1522

1623
class CompressionTests(object):
1724

@@ -64,83 +71,36 @@ def test_zip(self):
6471
pytest.raises(zipfile.BadZipfile, self.read_csv,
6572
f, compression='zip')
6673

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
74+
@pytest.mark.parametrize('compress_type, compress_method, ext', [
75+
('gzip', gzip.GzipFile, 'gz'),
76+
('bz2', bz2.BZ2File, 'bz2'),
77+
pytest.param('xz', getattr(lzma, 'LZMAFile', None), 'xz',
78+
marks=td.skip_if_no_lzma)
79+
])
80+
def test_other_compression(self, compress_type, compress_method, ext):
9581

9682
with open(self.csv1, 'rb') as data_file:
9783
data = data_file.read()
9884
expected = self.read_csv(self.csv1)
9985

10086
with tm.ensure_clean() as path:
101-
tmp = bz2.BZ2File(path, mode='wb')
87+
tmp = compress_method(path, mode='wb')
10288
tmp.write(data)
10389
tmp.close()
10490

105-
result = self.read_csv(path, compression='bz2')
91+
result = self.read_csv(path, compression=compress_type)
10692
tm.assert_frame_equal(result, expected)
10793

108-
pytest.raises(ValueError, self.read_csv,
109-
path, compression='bz3')
94+
if compress_type == 'bz2':
95+
pytest.raises(ValueError, self.read_csv,
96+
path, compression='bz3')
11097

11198
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')
99+
result = self.read_csv(fin, compression=compress_type)
140100
tm.assert_frame_equal(result, expected)
141101

142-
with tm.ensure_clean('test.xz') as path:
143-
tmp = lzma.LZMAFile(path, mode='wb')
102+
with tm.ensure_clean('test.{}'.format(ext)) as path:
103+
tmp = compress_method(path, mode='wb')
144104
tmp.write(data)
145105
tmp.close()
146106
result = self.read_csv(path, compression='infer')

0 commit comments

Comments
 (0)