Пример #1
0
def test_safe_edit_unlinks_copy_on_error(tmpdir):
    os.chdir(str(tmpdir))
    with pytest.raises(ValueError):
        with SafeFile("asdf") as f:
            f.open_new("wb")
            f_name = f.name
            raise ValueError()
    assert not os.path.exists(f_name)
Пример #2
0
def test_safe_writable_no_rename_no_writeprotect(tmpdir):
    os.chdir(str(tmpdir))
    with SafeFile("asdf") as f:
        f.open_inplace("wb")
        assert f.name == "asdf"
        f.write(b"asdf")

    assert open("asdf", "rb").read() == b"asdf"
Пример #3
0
def test_safefile_fileobj_api(tmpdir):
    os.chdir(str(tmpdir))
    with open("asdf", "wb") as seed:
        seed.write(1024 * b"X")
    with SafeFile("asdf", encoding="utf-8") as f:
        f.open_inplace("r+b")
        f.seek(823)
        assert f.tell() == 823
        assert int(f.fileno()) > 2
Пример #4
0
def test_safe_edit_read_write_encoded(tmpdir):
    os.chdir(str(tmpdir))
    open("asdf", "wb").write(b"csdf")
    with SafeFile("asdf", encoding="utf-8") as f:
        f.open_inplace("r+b")
        assert f.read() == "csdf"
        f.write("asdf")

    assert open("asdf", "rb").read() == b"csdfasdf"
Пример #5
0
def test_safe_edit_truncate(tmpdir):
    os.chdir(str(tmpdir))
    open("asdf", "wb").write(b"csdf")
    with SafeFile("asdf", encoding="utf-8") as f:
        f.open_inplace("r+b")
        assert f.read() == "csdf"
        f.seek(0)
        f.truncate()

    assert open("asdf", "rb").read() == b""
Пример #6
0
def test_safe_writable_no_rename_no_writeprotect_existing_file(tmpdir):
    os.chdir(str(tmpdir))
    open("asdf", "wb").write(b"bsdf")
    with SafeFile("asdf") as f:
        f.open_inplace("r+b")
        assert f.read() == b"bsdf"
        f.seek(0)
        assert f.name == "asdf"
        f.write(b"asdf")

    assert open("asdf", "rb").read() == b"asdf"
Пример #7
0
def test_safe_writable_rename_writeprotect(tmpdir):
    os.chdir(str(tmpdir))
    with SafeFile("asdf") as f:
        f.use_write_protection()
        f.open_new("wb")
        assert f.name != "asdf"
        f.write(b"asdf")

    assert open("asdf", "rb").read() == b"asdf"

    with pytest.raises(IOError):
        open("asdf", "wb")
Пример #8
0
def test_safe_edit_inplace_with_write_protection(tmpdir):
    os.chdir(str(tmpdir))
    open("asdf", "wb").write(b"csdf")
    os.chmod("asdf", 0o440)
    with SafeFile("asdf") as f:
        f.use_write_protection()
        f.open_inplace("r+b")
        assert f.name == "asdf"
        assert f.read() == b"csdf"
        f.seek(0)
        f.write(b"asdf")

    assert open("asdf", "rb").read() == b"asdf"
    with pytest.raises(IOError):
        open("asdf", "wb")
Пример #9
0
def test_safe_edit_noop(tmpdir):
    with SafeFile(str(tmpdir / "file")):
        pass
    assert not os.path.exists(str(tmpdir / "file"))