@@ -424,7 +424,53 @@ def test_concat_loads_variables(self):
424424 out .compute ()
425425 assert kernel_call_count == 24
426426
427- # Finally, test that riginals are unaltered
427+ # Finally, test that originals are unaltered
428+ assert ds1 ["d" ].data is d1
429+ assert ds1 ["c" ].data is c1
430+ assert ds2 ["d" ].data is d2
431+ assert ds2 ["c" ].data is c2
432+ assert ds3 ["d" ].data is d3
433+ assert ds3 ["c" ].data is c3
434+
435+ # now check that concat() is correctly using dask name equality to skip loads
436+ out = xr .concat (
437+ [ds1 , ds1 , ds1 ], dim = "n" , data_vars = "different" , coords = "different"
438+ )
439+ assert kernel_call_count == 24
440+ # variables are not loaded in the output
441+ assert isinstance (out ["d" ].data , dask .array .Array )
442+ assert isinstance (out ["c" ].data , dask .array .Array )
443+
444+ out = xr .concat (
445+ [ds1 , ds1 , ds1 ], dim = "n" , data_vars = [], coords = [], compat = "identical"
446+ )
447+ assert kernel_call_count == 24
448+ # variables are not loaded in the output
449+ assert isinstance (out ["d" ].data , dask .array .Array )
450+ assert isinstance (out ["c" ].data , dask .array .Array )
451+
452+ out = xr .concat (
453+ [ds1 , ds2 .compute (), ds3 ],
454+ dim = "n" ,
455+ data_vars = "all" ,
456+ coords = "different" ,
457+ compat = "identical" ,
458+ )
459+ # c1,c3 must be computed for comparison since c2 is numpy;
460+ # d2 is computed too
461+ assert kernel_call_count == 28
462+
463+ out = xr .concat (
464+ [ds1 , ds2 .compute (), ds3 ],
465+ dim = "n" ,
466+ data_vars = "all" ,
467+ coords = "all" ,
468+ compat = "identical" ,
469+ )
470+ # no extra computes
471+ assert kernel_call_count == 30
472+
473+ # Finally, test that originals are unaltered
428474 assert ds1 ["d" ].data is d1
429475 assert ds1 ["c" ].data is c1
430476 assert ds2 ["d" ].data is d2
0 commit comments