@@ -3955,6 +3955,63 @@ def test_migrate_snapshot(snapshot: Snapshot, mocker: MockerFixture, adapter_moc
39553955 )
39563956
39573957
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+
39584015def test_migrate_managed (adapter_mock , make_snapshot , mocker : MockerFixture ):
39594016 evaluator = SnapshotEvaluator (adapter_mock )
39604017
0 commit comments