def test_append(ctx): contents = b"meow!\n" additional_contents = b"purr\n" with ctx() as path: with bf.LocalBlobFile(path, "ab") as w: w.write(contents) with bf.LocalBlobFile(path, "ab") as w: w.write(additional_contents) with bf.BlobFile(path, "rb") as r: assert r.read() == contents + additional_contents
def test_cache_dir(ctx): cache_dir = tempfile.mkdtemp() contents = b"meow!" alternative_contents = b"purr!" with ctx() as path: with bf.BlobFile(path, mode="wb") as f: f.write(contents) with bf.LocalBlobFile(path, mode="rb", cache_dir=cache_dir) as f: assert f.read() == contents content_hash = hashlib.md5(contents).hexdigest() cache_path = bf.join(cache_dir, content_hash, bf.basename(path)) with open(cache_path, "rb") as f: assert f.read() == contents # alter the cached file to make sure we are not re-reading the remote file with open(cache_path, "wb") as f: f.write(alternative_contents) with bf.LocalBlobFile(path, mode="rb", cache_dir=cache_dir) as f: assert f.read() == alternative_contents