diff --git a/pandas/tests/io/json/test_compression.py b/pandas/tests/io/json/test_compression.py index a83ec53904b28..2cf4c435bdc12 100644 --- a/pandas/tests/io/json/test_compression.py +++ b/pandas/tests/io/json/test_compression.py @@ -1,38 +1,10 @@ import pytest import pandas as pd -from pandas import compat import pandas.util.testing as tm -import pandas.util._test_decorators as td from pandas.util.testing import assert_frame_equal, assert_raises_regex -COMPRESSION_TYPES = [None, 'bz2', 'gzip', - pytest.param('xz', marks=td.skip_if_no_lzma)] - - -def decompress_file(path, compression): - if compression is None: - f = open(path, 'rb') - elif compression == 'gzip': - import gzip - f = gzip.GzipFile(path, 'rb') - elif compression == 'bz2': - import bz2 - f = bz2.BZ2File(path, 'rb') - elif compression == 'xz': - lzma = compat.import_lzma() - f = lzma.open(path, 'rb') - else: - msg = 'Unrecognized compression type: {}'.format(compression) - raise ValueError(msg) - - result = f.read().decode('utf8') - f.close() - return result - - -@pytest.mark.parametrize('compression', COMPRESSION_TYPES) def test_compression_roundtrip(compression): df = pd.DataFrame([[0.123456, 0.234567, 0.567567], [12.32112, 123123.2, 321321.2]], @@ -43,8 +15,9 @@ def test_compression_roundtrip(compression): assert_frame_equal(df, pd.read_json(path, compression=compression)) # explicitly ensure file was compressed. - uncompressed_content = decompress_file(path, compression) - assert_frame_equal(df, pd.read_json(uncompressed_content)) + with tm.decompress_file(path, compression) as fh: + result = fh.read().decode('utf8') + assert_frame_equal(df, pd.read_json(result)) def test_compress_zip_value_error(): @@ -67,7 +40,6 @@ def test_read_zipped_json(): assert_frame_equal(uncompressed_df, compressed_df) -@pytest.mark.parametrize('compression', COMPRESSION_TYPES) def test_with_s3_url(compression): boto3 = pytest.importorskip('boto3') pytest.importorskip('s3fs') @@ -88,7 +60,6 @@ def test_with_s3_url(compression): assert_frame_equal(df, roundtripped_df) -@pytest.mark.parametrize('compression', COMPRESSION_TYPES) def test_lines_with_compression(compression): with tm.ensure_clean() as path: df = pd.read_json('{"a": [1, 2, 3], "b": [4, 5, 6]}') @@ -98,7 +69,6 @@ def test_lines_with_compression(compression): assert_frame_equal(df, roundtripped_df) -@pytest.mark.parametrize('compression', COMPRESSION_TYPES) def test_chunksize_with_compression(compression): with tm.ensure_clean() as path: df = pd.read_json('{"a": ["foo", "bar", "baz"], "b": [4, 5, 6]}')