12
12
needs_fsspec = pytest .mark .skipif (not have_fsspec , reason = "needs fsspec" )
13
13
14
14
15
- @pytest .fixture (params = ("static_nested" ,
16
- "static_flat" ,
15
+ @pytest .fixture (params = ("static_flat" ,
16
+ "static_flat_legacy" ,
17
+ "static_nested" ,
18
+ "static_nested_legacy" ,
17
19
"directory_nested" ,
18
20
"directory_flat" ,
19
21
"directory_default" ,
@@ -35,14 +37,16 @@ def dataset(tmpdir, request):
35
37
36
38
if which .startswith ("static" ):
37
39
project_root = pathlib .Path (zarr .__file__ ).resolve ().parent .parent
38
- if which .endswith ("nested" ):
39
- static = project_root / "fixture/nested"
40
- generator = NestedDirectoryStore
41
- else :
42
- static = project_root / "fixture/flat"
43
- generator = DirectoryStore
40
+ suffix = which [len ("static_" ):]
41
+ static = project_root / "fixture" / suffix
44
42
45
43
if not static .exists (): # pragma: no cover
44
+
45
+ if "nested" in which :
46
+ generator = NestedDirectoryStore
47
+ else :
48
+ generator = DirectoryStore
49
+
46
50
# store the data - should be one-time operation
47
51
s = generator (str (static ))
48
52
a = zarr .open (store = s , mode = "w" , shape = (2 , 2 ), dtype = "<i8" )
@@ -69,22 +73,57 @@ def dataset(tmpdir, request):
69
73
return str (loc )
70
74
71
75
72
- def verify (array ):
73
- assert_array_equal (array [:], [[1 , 2 ], [3 , 4 ]])
76
+ def verify (array , expect_failure = False ):
77
+ try :
78
+ assert_array_equal (array [:], [[1 , 2 ], [3 , 4 ]])
79
+ except :
80
+ if expect_failure :
81
+ pytest .xfail ()
82
+ else :
83
+ raise
74
84
75
85
76
86
def test_open (dataset ):
77
- verify (zarr .open (dataset , "r" ))
87
+ """
88
+ Use zarr.open to open the dataset fixture. Legacy nested datatsets
89
+ without the dimension_separator metadata are not expected to be
90
+ openable.
91
+ """
92
+ failure = "nested_legacy" in dataset
93
+ verify (zarr .open (dataset , "r" ), failure )
78
94
79
95
80
96
@needs_fsspec
81
97
def test_fsstore (dataset ):
82
- verify (Array (store = FSStore (dataset )))
98
+ """
99
+ Use FSStore to open the dataset fixture. Legacy nested datatsets
100
+ without the dimension_separator metadata are not expected to be
101
+ openable.
102
+ """
103
+ failure = "nested_legacy" in dataset
104
+ verify (Array (store = FSStore (dataset )), failure )
83
105
84
106
85
107
def test_directory (dataset ):
86
- verify (zarr .Array (store = DirectoryStore (dataset )))
108
+ """
109
+ Use DirectoryStore to open the dataset fixture. Legacy nested datatsets
110
+ without the dimension_separator metadata are not expected to be
111
+ openable.
112
+ """
113
+ failure = "nested_legacy" in dataset
114
+ verify (zarr .Array (store = DirectoryStore (dataset )), failure )
87
115
88
116
89
117
def test_nested (dataset ):
90
- verify (Array (store = NestedDirectoryStore (dataset )))
118
+ """
119
+ Use NestedDirectoryStore to open the dataset fixture. This is the only
120
+ method that is expected to successfully open legacy nested datasets
121
+ without the dimension_separator metadata. However, for none-Nested
122
+ datasets without any metadata, NestedDirectoryStore will fail.
123
+ """
124
+ failure = (
125
+ "flat_legacy" in dataset or \
126
+ "directory_default" in dataset or \
127
+ "fs_default" in dataset
128
+ )
129
+ verify (Array (store = NestedDirectoryStore (dataset )), failure )
0 commit comments