@@ -170,7 +170,6 @@ def test_invalid_zarr_backend_storage_is_rejected(command, command_args):
170170 [
171171 ["append" , "only-one-store" ],
172172 ["normalise" , "left" , "right" ],
173- ["rechunk" , "store" , "variant_contig" ],
174173 ["remove" , "store" ],
175174 ["copy-store-to-icechunk" , "only-one-store" ],
176175 ],
@@ -228,15 +227,22 @@ def test_remove_cli_updates_vcz_store(tmp_path):
228227 check_removed_sample (vcz , "NA00002" )
229228
230229
231- def test_rechunk_cli_passes_arguments (monkeypatch ):
232- seen = {}
230+ def fake_rechunk (
231+ vcz ,
232+ variants_array_name ,
233+ variants_chunk_size = None ,
234+ * ,
235+ target_uncompressed_size_bytes = None ,
236+ backend_storage = None ,
237+ ):
238+ fake_rechunk .seen = {
239+ "args" : (vcz , variants_array_name , variants_chunk_size ),
240+ "target_uncompressed_size_bytes" : target_uncompressed_size_bytes ,
241+ "backend_storage" : backend_storage ,
242+ }
233243
234- def fake_rechunk (
235- vcz , variants_array_name , variants_chunk_size , * , backend_storage = None
236- ):
237- seen ["args" ] = (vcz , variants_array_name , variants_chunk_size )
238- seen ["backend_storage" ] = backend_storage
239244
245+ def test_rechunk_cli_passes_arguments (monkeypatch ):
240246 monkeypatch .setattr (cli , "rechunk_function" , fake_rechunk )
241247
242248 runner = ct .CliRunner ()
@@ -247,12 +253,63 @@ def fake_rechunk(
247253 )
248254
249255 assert result .exit_code == 0
250- assert seen == {
256+ assert fake_rechunk . seen == {
251257 "args" : ("store" , "variant_contig" , 4 ),
258+ "target_uncompressed_size_bytes" : None ,
252259 "backend_storage" : "icechunk" ,
253260 }
254261
255262
263+ def test_rechunk_cli_passes_target_uncompressed_size (monkeypatch ):
264+ monkeypatch .setattr (cli , "rechunk_function" , fake_rechunk )
265+
266+ runner = ct .CliRunner ()
267+ result = runner .invoke (
268+ cli .vczstore_main ,
269+ ["rechunk" , "--target-uncompressed-size" , "100MB" , "store" , "variant_contig" ],
270+ catch_exceptions = False ,
271+ )
272+
273+ assert result .exit_code == 0
274+ assert fake_rechunk .seen == {
275+ "args" : ("store" , "variant_contig" , None ),
276+ "target_uncompressed_size_bytes" : 100_000_000 ,
277+ "backend_storage" : None ,
278+ }
279+
280+
281+ def test_rechunk_cli_rejects_neither_size_option ():
282+ runner = ct .CliRunner ()
283+ result = runner .invoke (cli .vczstore_main , ["rechunk" , "store" , "variant_contig" ])
284+
285+ assert result .exit_code == 2
286+ assert (
287+ "Must specify either VARIANTS_CHUNK_SIZE or --target-uncompressed-size"
288+ in result .output
289+ )
290+
291+
292+ def test_rechunk_cli_rejects_both_size_options ():
293+ runner = ct .CliRunner ()
294+ result = runner .invoke (
295+ cli .vczstore_main ,
296+ [
297+ "rechunk" ,
298+ "--target-uncompressed-size" ,
299+ "100MB" ,
300+ "store" ,
301+ "variant_contig" ,
302+ "4" ,
303+ ],
304+ )
305+
306+ assert result .exit_code == 2
307+ assert (
308+ "Cannot specify both VARIANTS_CHUNK_SIZE and --target-uncompressed-size"
309+ in result .output
310+ )
311+
312+
256313@pytest .mark .parametrize (
257314 ("backend_storage" , "zarr_format" ),
258315 [(None , None ), ("icechunk" , 3 )],
0 commit comments