def test_cat_get(ftp_writable, tmpdir): host, port, user, pw = ftp_writable fs = FTPFileSystem(host, port, user, pw, block_size=500) fs.mkdir("/tmp") data = b"hello" * 500 fs.pipe("/tmp/myfile", data) assert fs.cat_file("/tmp/myfile") == data fn = os.path.join(tmpdir, "lfile") fs.get_file("/tmp/myfile", fn) assert open(fn, "rb").read() == data
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_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")
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)