Skip to content

Commit 28c0cf5

Browse files
committed
using pytest.mark.skipif inside parameters
1 parent 8362329 commit 28c0cf5

File tree

4 files changed

+34
-33
lines changed

4 files changed

+34
-33
lines changed

conftest.py

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import pytest
22

3-
from dask.compatibility import BZ2File, GzipFile, LZMAFile
4-
53

64
def pytest_addoption(parser):
75
parser.addoption("--runslow", action="store_true", help="run slow tests")
@@ -15,22 +13,3 @@ def pytest_runtest_setup(item):
1513
def pytest_ignore_collect(path, config):
1614
if 'run_test.py' in str(path):
1715
return True
18-
19-
20-
@pytest.fixture(params=[(open, None), (GzipFile, 'gzip'),
21-
(BZ2File, 'bz2'), (LZMAFile, 'xz')])
22-
def open_comp_pair(request):
23-
myopen, compression = request.param
24-
if compression == 'xz':
25-
pytest.importorskip('lzma')
26-
return myopen, compression
27-
28-
29-
@pytest.fixture
30-
def myopen(open_comp_pair):
31-
return open_comp_pair[0]
32-
33-
34-
@pytest.fixture
35-
def compression(open_comp_pair):
36-
return open_comp_pair[1]

dask/compatibility.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
PY3 = sys.version_info[0] == 3
1010
PY2 = sys.version_info[0] == 2
1111

12+
LZMA_AVAILABLE = True
13+
1214
if PY3:
1315
import builtins
1416
from queue import Queue, Empty
@@ -183,6 +185,7 @@ class LZMAFile:
183185
def __init__(self, *args, **kwargs):
184186
raise ValueError("xz files requires the lzma module. "
185187
"To use, install lzmaffi or backports.lzma.")
188+
LZMA_AVAILABLE = False
186189

187190

188191
def getargspec(func):

dask/dataframe/tests/test_io.py

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import dask.dataframe as dd
1919
from dask.dataframe.io import (read_csv, file_size, dataframe_from_ctable,
2020
from_array, from_bcolz, from_dask_array)
21-
from dask.compatibility import StringIO, BZ2File, GzipFile, LZMAFile
21+
from dask.compatibility import BZ2File, GzipFile, LZMAFile, LZMA_AVAILABLE
2222

2323
from dask.utils import filetext, tmpfile, ignoring, compressions
2424
from dask.async import get_sync
@@ -48,15 +48,25 @@
4848
""".strip()
4949

5050

51-
@pytest.fixture
52-
def pd_compression(compression):
53-
if compression == 'xz' and LooseVersion(pd.__version__) <= '0.18.1':
54-
pytest.skip('pandas <= 0.18.0 does not support xz compression')
55-
return compression
56-
57-
58-
@pytest.mark.parametrize('infer', [True, False])
59-
def test_read_csv(myopen, compression, pd_compression, infer):
51+
SKIP_PD_XZ = pytest.mark.skipif(
52+
not LZMA_AVAILABLE or LooseVersion(pd.__version__) <= LooseVersion('0.18.0'),
53+
reason=('no lzma module found' if not LZMA_AVAILABLE else
54+
'pandas <= 0.18.0 does not support xz compression'))
55+
56+
57+
@pytest.mark.parametrize('open_comp_pair,infer',
58+
[SKIP_PD_XZ(((o, c), i)) if c == 'xz' else ((o, c), i)
59+
for (o, c), i in product([(open, None),
60+
(GzipFile, 'gzip'),
61+
(BZ2File, 'bz2'),
62+
(LZMAFile, 'xz')],
63+
(True, False))])
64+
def test_read_csv(open_comp_pair, infer):
65+
myopen, compression = open_comp_pair
66+
if compression == 'xz':
67+
if LooseVersion(pd.__version__) <= '0.18.0':
68+
pytest.skip()
69+
pytest.importorskip('lzma')
6070
text_ = text if compression is None else text.encode()
6171
ext = dict((v, k) for (k, v) in compressions.items()).get(compression, '')
6272
with filetext(text_, open=myopen, extension=ext) as fn:
@@ -69,8 +79,8 @@ def test_read_csv(myopen, compression, pd_compression, infer):
6979
result = f.compute(get=dask.get)
7080
# index may be different
7181
assert eq(result.reset_index(drop=True),
72-
pd.read_csv(fn, compression=pd_compression,
73-
lineterminator='\n'))
82+
pd.read_csv(fn, compression=compression, lineterminator='\n'))
83+
7484

7585

7686
def test_file_size():

dask/tests/test_utils.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,18 @@
33
import numpy as np
44
import pytest
55

6+
from dask.compatibility import BZ2File, GzipFile, LZMAFile, LZMA_AVAILABLE
67
from dask.utils import (textblock, filetext, takes_multiple_arguments,
78
Dispatch, tmpfile, different_seeds, file_size)
89

910

11+
SKIP_XZ = pytest.mark.skipif(not LZMA_AVAILABLE, reason="no lzma library")
12+
@pytest.mark.parametrize('myopen,compression',
13+
[(open, None), (GzipFile, 'gzip'), (BZ2File, 'bz2'),
14+
SKIP_XZ((LZMAFile, 'xz'))])
1015
def test_textblock(myopen, compression):
16+
if compression == 'xz':
17+
pytest.importorskip('lzma')
1118
text = b'123 456 789 abc def ghi'.replace(b' ', os.linesep.encode())
1219
with filetext(text, open=myopen, mode='wb') as fn:
1320
text = ''.join(textblock(fn, 1, 11, compression)).encode()
@@ -19,6 +26,8 @@ def test_textblock(myopen, compression):
1926
assert ''.join(textblock(fn, k, k, compression)).encode() == b''
2027

2128

29+
@pytest.mark.parametrize('myopen,compression',
30+
[(open, None), (GzipFile, 'gzip'), (BZ2File, 'bz2'), (LZMAFile, 'xz')])
2231
def test_filesize(myopen, compression):
2332
if compression == 'xz':
2433
pytest.importorskip('lzma')

0 commit comments

Comments
 (0)