def test_transaction(ftp_writable): host, port, user, pw = ftp_writable fs = FTPFileSystem(host, port, user, pw) fs.mkdir('/tmp') fn = '/tr' with fs.transaction: with fs.open(fn, 'wb') as f: f.write(b'not') assert not fs.exists(fn) assert fs.exists(fn) assert fs.cat(fn) == b'not'
def test_transaction(ftp_writable): host, port, user, pw = ftp_writable fs = FTPFileSystem(host, port, user, pw) fs.mkdir("/tmp") fn = "/tr" with fs.transaction: with fs.open(fn, "wb") as f: f.write(b"not") assert not fs.exists(fn) assert fs.exists(fn) assert fs.cat(fn) == b"not" fs.rm(fn) assert not fs.exists(fn)
def test_write_big(ftp_writable): host, port, user, pw = ftp_writable fs = FTPFileSystem(host, port, user, pw, block_size=1000) fn = '/bigger' with fs.open(fn, 'wb') as f: f.write(b'o' * 500) assert not fs.exists(fn) f.write(b'o' * 1000) fs.invalidate_cache() assert fs.exists(fn) f.write(b'o' * 200) f.flush() assert f.buffer.tell() == 0 assert fs.cat(fn) == b'o' * 1700
def test_write_big(ftp_writable, cache_type): host, port, user, pw = ftp_writable fs = FTPFileSystem(host, port, user, pw, block_size=1000, cache_type=cache_type) fn = "/bigger" with fs.open(fn, "wb") as f: f.write(b"o" * 500) assert not fs.exists(fn) f.write(b"o" * 1000) fs.invalidate_cache() assert fs.exists(fn) f.write(b"o" * 200) f.flush() assert fs.info(fn)["size"] == 1700 assert fs.cat(fn) == b"o" * 1700
def test_mkdir(ftp_writable): host, port, user, pw = ftp_writable fs = FTPFileSystem(host, port, user, pw) with pytest.raises(ftplib.error_perm): fs.mkdir("/tmp/not/exist", create_parents=False) fs.mkdir("/tmp/not/exist") assert fs.exists("/tmp/not/exist") fs.makedirs("/tmp/not/exist", exist_ok=True) with pytest.raises(FileExistsError): fs.makedirs("/tmp/not/exist", exist_ok=False) fs.makedirs("/tmp/not/exist/inner/inner") assert fs.isdir("/tmp/not/exist/inner/inner")
def test_transaction_with_cache(ftp_writable, tmpdir): host, port, user, pw = ftp_writable fs = FTPFileSystem(host, port, user, pw) fs.mkdir("/tmp") fs.mkdir("/tmp/dir") assert "dir" in fs.ls("/tmp", detail=False) with fs.transaction: fs.rmdir("/tmp/dir") assert "dir" not in fs.ls("/tmp", detail=False) assert not fs.exists("/tmp/dir")
def test_rm_recursive(ftp_writable): host, port, user, pw = ftp_writable fs = FTPFileSystem(host, port, user, pw) fs.mkdir("/tmp/topdir") fs.mkdir("/tmp/topdir/underdir") fs.touch("/tmp/topdir/afile") fs.touch("/tmp/topdir/underdir/afile") with pytest.raises(ftplib.error_perm): fs.rmdir("/tmp/topdir") fs.rm("/tmp/topdir", recursive=True) assert not fs.exists("/tmp/topdir")