Skip to content

Commit 05cf652

Browse files
committed
test for getitem
1 parent f4f8200 commit 05cf652

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

tests/v3/test_group.py

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from zarr.abc.store import Store
1414
from zarr.core.buffer import default_buffer_prototype
1515
from zarr.core.common import JSON, ZarrFormat
16-
from zarr.core.group import ConsolidatedMetadata, GroupMetadata
16+
from zarr.core.group import ConsolidatedMetadata, GroupMetadata, _MixedConsolidatedMetadataException
1717
from zarr.core.sync import sync
1818
from zarr.errors import ContainsArrayError, ContainsGroupError
1919
from zarr.storage import LocalStore, MemoryStore, StorePath, ZipStore
@@ -316,15 +316,37 @@ def test_group_getitem(store: Store, zarr_format: ZarrFormat, consolidated: bool
316316

317317
assert group["subgroup"] == subgroup
318318
assert group["subarray"] == subarray
319-
assert subgroup["subarray"] == subsubarray
320-
# assert group["subgroup/subarray"] == subsubarray
319+
assert group["subgroup"]["subarray"] == subsubarray
320+
assert group["subgroup/subarray"] == subsubarray
321321

322322
with pytest.raises(KeyError):
323323
group["nope"]
324324

325325
with pytest.raises(KeyError, match="subarray/subsubarray"):
326326
group["subarray/subsubarray"]
327327

328+
# Now test the mixed case
329+
if consolidated:
330+
group = zarr.api.synchronous.consolidate_metadata(store=store, zarr_format=zarr_format)
331+
# we're going to assume that `group.metadata` is correct, and reuse that to focus
332+
# on indexing in this test. Other tests verify the correctness of group.metadata
333+
object.__setattr__(
334+
group.metadata.consolidated_metadata.metadata["subgroup"],
335+
"consolidated_metadata",
336+
None,
337+
)
338+
339+
# test the implementation directly
340+
with pytest.raises(_MixedConsolidatedMetadataException):
341+
group._async_group._getitem_consolidated(
342+
group.store_path, "subgroup/subarray", prefix="/"
343+
)
344+
345+
assert group["subgroup/subarray"] == subsubarray
346+
347+
with pytest.raises(KeyError, match="subarray/subsubarray"):
348+
group["subarray/subsubarray"]
349+
328350

329351
def test_group_get_with_default(store: Store, zarr_format: ZarrFormat) -> None:
330352
group = Group.from_store(store, zarr_format=zarr_format)

0 commit comments

Comments
 (0)