Skip to content

Commit caa8fb7

Browse files
authored
Merge pull request #6 from bcdev/rollback_using_zarr_store
Rollback using zarr store
2 parents 62d2409 + dc9e94d commit caa8fb7

File tree

13 files changed

+2261
-678
lines changed

13 files changed

+2261
-678
lines changed

tests/helpers.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import fsspec
99
import numpy as np
10+
import pyproj
1011
import xarray as xr
1112

1213
default_dims = ("time", "y", "x")
@@ -71,6 +72,7 @@ def make_test_dataset(
7172
dims: tuple[str, str, str] = default_dims,
7273
shape: tuple[int, int, int] = default_shape,
7374
chunks: tuple[int, int, int] = default_chunks,
75+
crs: str | None = None,
7476
index: int = 0,
7577
uri: str | None = None,
7678
storage_options: dict[str, Any] | None = None
@@ -113,6 +115,9 @@ def make_test_dataset(
113115
}
114116
)
115117

118+
if crs:
119+
ds["crs"] = xr.DataArray(np.array(0), attrs=pyproj.CRS(crs).to_cf())
120+
116121
ds = ds.chunk(dict(tuple(zip(dims, chunks))))
117122

118123
if not uri:

tests/test_chunkutil.py

Lines changed: 0 additions & 164 deletions
This file was deleted.

tests/test_cli.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from click.testing import CliRunner
77

88
from zappend.cli import zappend
9+
from zappend.fsutil.fileobj import FileObj
910
from .helpers import clear_memory_fs
1011
from .helpers import make_test_dataset
1112

@@ -60,6 +61,7 @@ def test_no_slices(self):
6061
result = runner.invoke(zappend, [])
6162
self.assertEqual(0, result.exit_code)
6263
self.assertEqual("No slice datasets given.\n", result.output)
64+
self.assertFalse(FileObj("memory://target.zarr").exists())
6365

6466
def test_some_slices_and_target(self):
6567
make_test_dataset(uri="memory://slice-1.zarr")
@@ -78,6 +80,27 @@ def test_some_slices_and_target(self):
7880
])
7981
self.assertEqual("", result.output)
8082
self.assertEqual(0, result.exit_code)
83+
self.assertTrue(FileObj("memory://target.zarr").exists())
84+
85+
def test_some_slices_and_target_dry_run(self):
86+
make_test_dataset(uri="memory://slice-1.zarr")
87+
make_test_dataset(uri="memory://slice-2.zarr")
88+
make_test_dataset(uri="memory://slice-3.zarr")
89+
90+
runner = CliRunner()
91+
# noinspection PyTypeChecker
92+
result = runner.invoke(zappend,
93+
[
94+
"--target",
95+
"memory://target.zarr",
96+
"--dry-run",
97+
"memory://slice-1.zarr",
98+
"memory://slice-2.zarr",
99+
"memory://slice-3.zarr",
100+
])
101+
self.assertEqual("", result.output)
102+
self.assertEqual(0, result.exit_code)
103+
self.assertFalse(FileObj("memory://target.zarr").exists())
81104

82105
def test_some_slices_and_no_target(self):
83106
make_test_dataset(uri="memory://slice-1.zarr")
@@ -95,3 +118,4 @@ def test_some_slices_and_no_target(self):
95118
self.assertEqual(1, result.exit_code)
96119
self.assertEqual("Error: Missing 'target_uri' in configuration\n",
97120
result.output)
121+
self.assertFalse(FileObj("memory://target.zarr").exists())

tests/test_context.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,10 @@ def test_temp_dir(self):
6060
ctx = Context({"target_uri": "memory://target.zarr"})
6161
self.assertIsInstance(ctx.temp_dir, FileObj)
6262
self.assertTrue(ctx.temp_dir.exists())
63+
64+
def test_dry_run(self):
65+
ctx = Context({"target_uri": "memory://target.zarr"})
66+
self.assertEqual(False, ctx.dry_run)
67+
ctx = Context({"target_uri": "memory://target.zarr",
68+
"dry_run": True})
69+
self.assertEqual(True, ctx.dry_run)

tests/test_processor.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ def test_process_one_slice(self):
3232
self.assertEqual({'time': 1, 'y': 10, 'x': 20}, ds.dims)
3333
self.assertEqual({'x', 'y', 'time', 'chl', 'tsm'}, set(ds.variables))
3434

35+
self.assertEqual((20,), ds.x.encoding.get("chunks"))
36+
self.assertEqual((10,), ds.y.encoding.get("chunks"))
37+
self.assertEqual((1,), ds.time.encoding.get("chunks"))
38+
self.assertEqual((1, 5, 10),
39+
ds.chl.encoding.get("chunks"))
40+
self.assertEqual((1, 5, 10),
41+
ds.tsm.encoding.get("chunks"))
42+
3543
def test_process_two_slices(self):
3644
target_dir = FileObj("memory://target.zarr")
3745
self.assertFalse(target_dir.exists())

0 commit comments

Comments
 (0)