@@ -400,6 +400,37 @@ async def test_list_prefix(self, store: S) -> None:
400
400
expected = tuple (sorted (expected ))
401
401
assert observed == expected
402
402
403
+ async def test_list_empty_path (self , store : S ) -> None :
404
+ """
405
+ Verify that list and list_prefix work correctly when path is an empty string,
406
+ i.e. no unwanted replacement occurs.
407
+ """
408
+ data = self .buffer_cls .from_bytes (b"" )
409
+ store_dict = {
410
+ "foo/bar/zarr.json" : data ,
411
+ "foo/bar/c/1" : data ,
412
+ "foo/baz/c/0" : data ,
413
+ }
414
+ await store ._set_many (store_dict .items ())
415
+
416
+ # Test list()
417
+ observed_list = await _collect_aiterator (store .list ())
418
+ observed_list_sorted = sorted (observed_list )
419
+ expected_list_sorted = sorted (store_dict .keys ())
420
+ assert observed_list_sorted == expected_list_sorted
421
+
422
+ # Test list_prefix() with an empty prefix
423
+ observed_prefix_empty = await _collect_aiterator (store .list_prefix ("" ))
424
+ observed_prefix_empty_sorted = sorted (observed_prefix_empty )
425
+ expected_prefix_empty_sorted = sorted (store_dict .keys ())
426
+ assert observed_prefix_empty_sorted == expected_prefix_empty_sorted
427
+
428
+ # Test list_prefix() with a non-empty prefix
429
+ observed_prefix = await _collect_aiterator (store .list_prefix ("foo/bar/" ))
430
+ observed_prefix_sorted = sorted (observed_prefix )
431
+ expected_prefix_sorted = sorted (k for k in store_dict if k .startswith ("foo/bar/" ))
432
+ assert observed_prefix_sorted == expected_prefix_sorted
433
+
403
434
async def test_list_dir (self , store : S ) -> None :
404
435
root = "foo"
405
436
store_dict = {
0 commit comments