@@ -3955,6 +3955,63 @@ def test_migrate_snapshot(snapshot: Snapshot, mocker: MockerFixture, adapter_moc
3955
3955
)
3956
3956
3957
3957
3958
+ def test_migrate_only_processes_target_snapshots (
3959
+ mocker : MockerFixture , adapter_mock , make_snapshot
3960
+ ):
3961
+ evaluator = SnapshotEvaluator (adapter_mock )
3962
+
3963
+ target_model = SqlModel (
3964
+ name = "test_schema.target_model" ,
3965
+ kind = FullKind (),
3966
+ query = parse_one ("SELECT 1 AS a" ),
3967
+ )
3968
+ extra_model = SqlModel (
3969
+ name = "test_schema.extra_model" ,
3970
+ kind = FullKind (),
3971
+ query = parse_one ("SELECT 1 AS a" ),
3972
+ )
3973
+
3974
+ target_snapshot = make_snapshot (target_model )
3975
+ extra_snapshot = make_snapshot (extra_model )
3976
+ target_snapshot .categorize_as (SnapshotChangeCategory .BREAKING )
3977
+ extra_snapshot .categorize_as (SnapshotChangeCategory .BREAKING )
3978
+
3979
+ target_snapshots = [target_snapshot ]
3980
+ snapshots = {
3981
+ target_snapshot .snapshot_id : target_snapshot ,
3982
+ extra_snapshot .snapshot_id : extra_snapshot ,
3983
+ }
3984
+
3985
+ mocker .patch .object (
3986
+ evaluator ,
3987
+ "_get_data_objects" ,
3988
+ return_value = {target_snapshot .snapshot_id : mocker .Mock ()},
3989
+ )
3990
+ migrate_mock = mocker .patch .object (evaluator , "_migrate_snapshot" )
3991
+
3992
+ def apply_side_effect (snapshot_iterable , fn , * _args , ** _kwargs ):
3993
+ for snapshot in snapshot_iterable :
3994
+ fn (snapshot )
3995
+ return ([], [])
3996
+
3997
+ apply_mock = mocker .patch (
3998
+ "sqlmesh.core.snapshot.evaluator.concurrent_apply_to_snapshots" ,
3999
+ side_effect = apply_side_effect ,
4000
+ )
4001
+
4002
+ evaluator .migrate (target_snapshots = target_snapshots , snapshots = snapshots )
4003
+
4004
+ assert apply_mock .call_count == 1
4005
+ called_snapshots = list (apply_mock .call_args .args [0 ])
4006
+ assert called_snapshots == target_snapshots
4007
+
4008
+ migrate_mock .assert_called_once ()
4009
+ called_snapshot , snapshots_by_name , * _ = migrate_mock .call_args .args
4010
+ assert called_snapshot is target_snapshot
4011
+ assert target_snapshot .name in snapshots_by_name
4012
+ assert extra_snapshot .name in snapshots_by_name
4013
+
4014
+
3958
4015
def test_migrate_managed (adapter_mock , make_snapshot , mocker : MockerFixture ):
3959
4016
evaluator = SnapshotEvaluator (adapter_mock )
3960
4017
0 commit comments