Skip to content

Commit e1a58a8

Browse files
authored
Merge pull request #332 from alimanfoo/fix-coverage-alimanfoo-20181114
Fix coverage for consolidated metadata store
2 parents 2720338 + 081dcd2 commit e1a58a8

File tree

1 file changed

+49
-2
lines changed

1 file changed

+49
-2
lines changed

zarr/tests/test_storage.py

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@
1919
DirectoryStore, ZipStore, init_group, group_meta_key,
2020
getsize, migrate_1to2, TempStore, atexit_rmtree,
2121
NestedDirectoryStore, default_compressor, DBMStore,
22-
LMDBStore, atexit_rmglob, LRUStoreCache)
22+
LMDBStore, atexit_rmglob, LRUStoreCache,
23+
ConsolidatedMetadataStore)
2324
from zarr.meta import (decode_array_metadata, encode_array_metadata, ZARR_FORMAT,
2425
decode_group_metadata, encode_group_metadata)
2526
from zarr.compat import PY2
2627
from zarr.codecs import Zlib, Blosc, BZ2
27-
from zarr.errors import PermissionError
28+
from zarr.errors import PermissionError, MetadataError
2829
from zarr.hierarchy import group
2930
from zarr.tests.util import CountingDict
3031

@@ -1251,3 +1252,49 @@ def test_format_compatibility():
12511252
else:
12521253
assert compressor.codec_id == z.compressor.codec_id
12531254
assert compressor.get_config() == z.compressor.get_config()
1255+
1256+
1257+
class TestConsolidatedMetadataStore(unittest.TestCase):
1258+
1259+
def test_bad_format(self):
1260+
1261+
# setup store with consolidated metdata
1262+
store = dict()
1263+
consolidated = {
1264+
# bad format version
1265+
'zarr_consolidated_format': 0,
1266+
}
1267+
store['.zmetadata'] = json.dumps(consolidated).encode()
1268+
1269+
# check appropriate error is raised
1270+
with pytest.raises(MetadataError):
1271+
ConsolidatedMetadataStore(store)
1272+
1273+
def test_read_write(self):
1274+
1275+
# setup store with consolidated metdata
1276+
store = dict()
1277+
consolidated = {
1278+
'zarr_consolidated_format': 1,
1279+
'metadata': {
1280+
'foo': 'bar',
1281+
'baz': 42,
1282+
}
1283+
}
1284+
store['.zmetadata'] = json.dumps(consolidated).encode()
1285+
1286+
# create consolidated store
1287+
cs = ConsolidatedMetadataStore(store)
1288+
1289+
# test __contains__, __getitem__
1290+
for key, value in consolidated['metadata'].items():
1291+
assert key in cs
1292+
assert value == cs[key]
1293+
1294+
# test __delitem__, __setitem__
1295+
with pytest.raises(PermissionError):
1296+
del cs['foo']
1297+
with pytest.raises(PermissionError):
1298+
cs['bar'] = 0
1299+
with pytest.raises(PermissionError):
1300+
cs['spam'] = 'eggs'

0 commit comments

Comments
 (0)