Skip to content

Commit 732f355

Browse files
committed
Testing force_new
1 parent 4889848 commit 732f355

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

tests/test_levels.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff 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(

zappend/levels.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff 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
"../"

0 commit comments

Comments
 (0)