File tree Expand file tree Collapse file tree 2 files changed +30
-5
lines changed
Expand file tree Collapse file tree 2 files changed +30
-5
lines changed Original file line number Diff line number Diff line change @@ -129,6 +129,26 @@ def test_args_validation(self):
129129 use_saved_levels = True ,
130130 )
131131
132+ def test_force_new (self ):
133+ source_path = "memory://source.zarr"
134+ make_test_dataset (
135+ uri = source_path ,
136+ dims = ("time" , "lat" , "lon" ),
137+ shape = (3 , 1024 , 2048 ),
138+ chunks = (1 , 128 , 256 ),
139+ )
140+
141+ target_dir = FileObj ("memory://target.levels" )
142+ self .assertFalse (target_dir .exists ())
143+ target_dir .mkdir ()
144+ (target_dir / "0.zarr" ).mkdir ()
145+ (target_dir / "0.zarr" / ".zgroup" ).write ("{}" )
146+ self .assertTrue (target_dir .exists ())
147+
148+ write_levels (source_path = source_path , target_path = target_dir .uri , force_new = True )
149+
150+ self .assertTrue (target_dir .exists ())
151+
132152 def test_default_x_y_with_crs (self ):
133153 source_path = "memory://source.zarr"
134154 make_test_dataset (
Original file line number Diff line number Diff line change @@ -172,14 +172,19 @@ def write_levels(
172172 variables = zappend_config .pop ("variables" , None ),
173173 )
174174
175- if target_fs .exists (target_root ):
176- if target_fs .exists (target_root ):
177- logger .warning (f"Permanently deleting { target_dir } " )
175+ target_exists = target_fs .exists (target_root )
176+ if target_exists :
177+ logger .info (f"Target directory { target_path } exists" )
178+ if force_new :
179+ logger .warning (f"Permanently deleting { target_path } (no rollback)" )
178180 if not dry_run :
179181 target_fs .rm (target_root , recursive = True )
182+ else :
183+ logger .info (f"Creating target directory { target_path } " )
184+ if not dry_run :
185+ target_fs .mkdirs (target_root , exist_ok = True )
180186
181187 if not dry_run :
182- target_fs .mkdirs (target_root , exist_ok = True )
183188 with target_fs .open (f"{ target_root } /.zlevels" , "wt" ) as fp :
184189 levels_data : dict [str , Any ] = dict (
185190 version = "1.0" ,
@@ -189,7 +194,7 @@ def write_levels(
189194 )
190195 json .dump (levels_data , fp , indent = 2 )
191196
192- if link_level_zero and not dry_run :
197+ if ( not dry_run ) and link_level_zero :
193198 path_class = get_fs_path_class (target_fs )
194199 rel_source_path = (
195200 "../"
You can’t perform that action at this time.
0 commit comments