Exemplo n.º 1
0
def test_mode_wt_newline(newline: Optional[str], data: bytes) -> None:
    fileobj = BytesIO()

    with xz_open(fileobj, "wt", newline=newline) as xzfile:
        xzfile.writelines(["a\n", "b\n"])

    assert lzma.decompress(fileobj.getvalue()) == data
Exemplo n.º 2
0
def test_mode_wt_encoding(encoding: str, data: str) -> None:
    fileobj = BytesIO()
    with xz_open(fileobj, "wt", check=0, encoding=encoding) as xzfile:
        xzfile.write(data)

    assert fileobj.getvalue() == bytes.fromhex(
        "fd377a585a000000ff12d9410200210116000000742fe5a301000bd0b5c3b1cf"
        "b2d0bed4baceb50000011c0c5da447cf06729e7a010000000000595a"
    )
Exemplo n.º 3
0
def test_mode_rt_encoding(encoding: str, expected: str) -> None:
    fileobj = BytesIO(
        bytes.fromhex(
            "fd377a585a000000ff12d9410200210116000000742fe5a301000bd0b5c3b1cf"
            "b2d0bed4baceb50000011c0c5da447cf06729e7a010000000000595a"
        )
    )
    with xz_open(fileobj, "rt", encoding=encoding) as xzfile:
        assert xzfile.read() == expected
Exemplo n.º 4
0
def test_mode_rt_newline(newline: Optional[str], expected: List[str]) -> None:
    fileobj = BytesIO(
        bytes.fromhex(
            "fd377a585a000000ff12d9410200210116000000742fe5a3010007610a620d63"
            "0d0a64000001180840a546ac06729e7a010000000000595a"
        )
    )

    with xz_open(fileobj, "rt", newline=newline) as xzfile:
        assert xzfile.readlines() == expected
Exemplo n.º 5
0
def test_mode_rt() -> None:
    fileobj = BytesIO(STREAM_BYTES)

    with xz_open(fileobj, "rt") as xzfile:
        assert xzfile.mode == "rt"
        assert xzfile.stream_boundaries == [0]
        assert xzfile.block_boundaries == [0, 10]

        assert xzfile.read() == "♥ utf8 ♥\n"

        assert xzfile.seek(9) == 9
        assert xzfile.read() == "♥\n"
Exemplo n.º 6
0
def test_mode_rb() -> None:
    fileobj = BytesIO(STREAM_BYTES)

    with xz_open(fileobj, "rb") as xzfile:
        assert xzfile.mode == "r"
        assert len(xzfile) == 13
        assert xzfile.stream_boundaries == [0]
        assert xzfile.block_boundaries == [0, 10]

        assert xzfile.read() == b"\xe2\x99\xa5 utf8 \xe2\x99\xa5\n"

        assert xzfile.seek(9) == 9
        assert xzfile.read() == b"\xe2\x99\xa5\n"
Exemplo n.º 7
0
def test_mode_wt_encoding_errors(errors: Optional[str], data: Optional[bytes]) -> None:
    fileobj = BytesIO()

    with xz_open(fileobj, "wt", errors=errors) as xzfile:
        if data is None:
            xzfile.write("X")  # to avoid having an empty file
            with pytest.raises(ValueError):
                xzfile.write("en\udc01co\udc0di\udc03ng")
        else:
            xzfile.write("en\udc01co\udc02di\udc03ng")

    if data is not None:
        assert lzma.decompress(fileobj.getvalue()) == data
Exemplo n.º 8
0
def test_mode_rt_file(tmp_path: Path) -> None:
    file_path = tmp_path / "file.xz"
    file_path.write_bytes(STREAM_BYTES)

    with file_path.open("rb") as fin:
        with xz_open(fin, "rt") as xzfile:
            assert xzfile.stream_boundaries == [0]
            assert xzfile.block_boundaries == [0, 10]
            assert xzfile.fileno() == fin.fileno()

            assert xzfile.read() == "♥ utf8 ♥\n"

            assert xzfile.seek(9) == 9
            assert xzfile.read() == "♥\n"
Exemplo n.º 9
0
def test_mode_wt_check() -> None:
    fileobj = BytesIO()

    with xz_open(fileobj, "wt", check=1) as xzfile:
        assert xzfile.mode == "wt"
        xzfile.write("α")
        xzfile.change_stream()
        xzfile.check = 4
        xzfile.write("β")
        xzfile.change_stream()
        xzfile.write("γ")
        xzfile.change_stream()
        xzfile.write("δ")

    assert fileobj.getvalue() == TEST_MODE_W_CHECK_BYTES
Exemplo n.º 10
0
def test_mode_wb_check() -> None:
    fileobj = BytesIO()

    with xz_open(fileobj, "wb", check=1) as xzfile:
        assert xzfile.mode == "w"
        xzfile.write(b"\xce\xb1")
        xzfile.change_stream()
        xzfile.check = 4
        xzfile.write(b"\xce\xb2")
        xzfile.change_stream()
        xzfile.write(b"\xce\xb3")
        xzfile.change_stream()
        xzfile.write(b"\xce\xb4")

    assert fileobj.getvalue() == TEST_MODE_W_CHECK_BYTES
Exemplo n.º 11
0
def test_mode_rt_encoding_errors(
    errors: Optional[str], expected: Optional[str]
) -> None:
    fileobj = BytesIO(
        bytes.fromhex(
            "fd377a585a000000ff12d9410200210116000000742fe5a301000a656e99636f"
            "986469976e67000000011b0b39a7621e06729e7a010000000000595a"
        )
    )

    with xz_open(fileobj, "rt", errors=errors) as xzfile:
        if expected is None:
            with pytest.raises(ValueError):
                xzfile.read()
        else:
            assert xzfile.read() == expected
Exemplo n.º 12
0
def test_mode_wb_preset() -> None:
    fileobj = BytesIO()

    with xz_open(fileobj, "wb", check=1) as xzfile:
        xzfile.write(b"\xce\xb1")
        xzfile.change_block()
        xzfile.preset = 9
        xzfile.write(b"\xce\xb2")
        xzfile.change_block()
        xzfile.write(b"\xce\xb3")
        xzfile.change_block()
        xzfile.write(b"\xce\xb4")
        xzfile.change_stream()
        xzfile.write(b"\xce\xb5")
        xzfile.change_block()
        xzfile.write(b"\xce\xb6")
        xzfile.change_stream()
        xzfile.write(b"\xce\xb7")
        xzfile.change_block()
        xzfile.write(b"\xce\xb8")

    assert fileobj.getvalue() == TEST_MODE_W_PRESET_BYTES
Exemplo n.º 13
0
def test_mode_wb_filters() -> None:
    fileobj = BytesIO()

    with xz_open(fileobj, "wb", check=1) as xzfile:
        xzfile.write(b"\xce\xb1")
        xzfile.change_block()
        xzfile.filters = [{"id": 3, "dist": 1}, {"id": 33}]
        xzfile.write(b"\xce\xb2")
        xzfile.change_block()
        xzfile.write(b"\xce\xb3")
        xzfile.change_block()
        xzfile.write(b"\xce\xb4")
        xzfile.change_stream()
        xzfile.write(b"\xce\xb5")
        xzfile.change_block()
        xzfile.write(b"\xce\xb6")
        xzfile.change_stream()
        xzfile.write(b"\xce\xb7")
        xzfile.change_block()
        xzfile.write(b"\xce\xb8")

    assert fileobj.getvalue() == TEST_MODE_W_FILTERS_BYTES
Exemplo n.º 14
0
def test_mode_wt_filters() -> None:
    fileobj = BytesIO()

    with xz_open(fileobj, "wt", check=1) as xzfile:
        xzfile.write("α")
        xzfile.change_block()
        xzfile.filters = [{"id": 3, "dist": 1}, {"id": 33}]
        xzfile.write("β")
        xzfile.change_block()
        xzfile.write("γ")
        xzfile.change_block()
        xzfile.write("δ")
        xzfile.change_stream()
        xzfile.write("ε")
        xzfile.change_block()
        xzfile.write("ζ")
        xzfile.change_stream()
        xzfile.write("η")
        xzfile.change_block()
        xzfile.write("θ")

    assert fileobj.getvalue() == TEST_MODE_W_FILTERS_BYTES
Exemplo n.º 15
0
def test_mode_wt_preset() -> None:
    fileobj = BytesIO()

    with xz_open(fileobj, "wt", check=1) as xzfile:
        xzfile.write("α")
        xzfile.change_block()
        xzfile.preset = 9
        xzfile.write("β")
        xzfile.change_block()
        xzfile.write("γ")
        xzfile.change_block()
        xzfile.write("δ")
        xzfile.change_stream()
        xzfile.write("ε")
        xzfile.change_block()
        xzfile.write("ζ")
        xzfile.change_stream()
        xzfile.write("η")
        xzfile.change_block()
        xzfile.write("θ")

    assert fileobj.getvalue() == TEST_MODE_W_PRESET_BYTES
Exemplo n.º 16
0
def test_mode_rb_encoding() -> None:
    fileobj = BytesIO(STREAM_BYTES)
    with pytest.raises(ValueError):
        xz_open(fileobj, "rb", encoding="latin1")
Exemplo n.º 17
0
def test_custom_strategy(mode: str) -> None:
    fileobj = BytesIO(STREAM_BYTES)
    strategy = Mock()

    with xz_open(fileobj, mode, block_read_strategy=strategy) as xzfile:
        assert xzfile.block_read_strategy == strategy
Exemplo n.º 18
0
def test_default_strategy(mode: str) -> None:
    fileobj = BytesIO(STREAM_BYTES)

    with xz_open(fileobj, mode) as xzfile:
        assert isinstance(xzfile.block_read_strategy, RollingBlockReadStrategy)
Exemplo n.º 19
0
def test_mode_invalid(mode: str) -> None:
    fileobj = BytesIO(STREAM_BYTES)

    with pytest.raises(ValueError) as exc_info:
        xz_open(fileobj, mode)
    assert str(exc_info.value) == f"Invalid mode: {mode}"
Exemplo n.º 20
0
def test_mode_rb_encoding_errors() -> None:
    fileobj = BytesIO(STREAM_BYTES)
    with pytest.raises(ValueError):
        xz_open(fileobj, "rb", errors="ignore")
Exemplo n.º 21
0
def test_mode_rb_newline() -> None:
    fileobj = BytesIO(STREAM_BYTES)
    with pytest.raises(ValueError):
        xz_open(fileobj, "rb", newline="\n")