@@ -4503,6 +4503,41 @@ def test_multiple_engine_cleanup(snapshot: Snapshot, adapters, make_snapshot):
45034503 )
45044504
45054505
4506+ def test_cleanup_skips_unavailable_gateway (snapshot : Snapshot , adapters , make_snapshot ):
4507+ engine_adapters = {"default" : adapters [0 ]}
4508+ evaluator = SnapshotEvaluator (engine_adapters )
4509+
4510+ model_with_missing_gw = load_sql_based_model (
4511+ parse ( # type: ignore
4512+ """
4513+ MODEL (
4514+ name test_schema.test_model,
4515+ kind FULL,
4516+ gateway nonexistent_gateway,
4517+ );
4518+ SELECT a::int FROM tbl;
4519+ """
4520+ ),
4521+ )
4522+
4523+ snapshot_missing_gw = make_snapshot (model_with_missing_gw )
4524+ snapshot .categorize_as (SnapshotChangeCategory .BREAKING )
4525+ snapshot_missing_gw .categorize_as (SnapshotChangeCategory .BREAKING )
4526+
4527+ evaluator .create ([snapshot ], {}, DeployabilityIndex .all_deployable ())
4528+
4529+ evaluator .cleanup (
4530+ [
4531+ SnapshotTableCleanupTask (snapshot = snapshot .table_info , dev_table_only = True ),
4532+ SnapshotTableCleanupTask (snapshot = snapshot_missing_gw .table_info , dev_table_only = True ),
4533+ ],
4534+ )
4535+
4536+ engine_adapters ["default" ].drop_table .assert_called_once_with (
4537+ f"sqlmesh__db.db__model__{ snapshot .version } __dev" , cascade = True
4538+ )
4539+
4540+
45064541def test_multi_engine_python_model_with_macros (adapters , make_snapshot ):
45074542 engine_adapters = {"default" : adapters [0 ], "secondary" : adapters [1 ]}
45084543 evaluator = SnapshotEvaluator (engine_adapters )
0 commit comments