|
13 | 13 | from sqlmesh.core.engine_adapter import DuckDBEngineAdapter |
14 | 14 | from sqlmesh.core.environment import EnvironmentNamingInfo |
15 | 15 | from sqlmesh.core.model import ( |
| 16 | + ExternalModel, |
16 | 17 | FullKind, |
17 | 18 | IncrementalByTimeRangeKind, |
18 | 19 | SeedKind, |
@@ -1163,6 +1164,36 @@ def test_broken_references(make_snapshot, mocker: MockerFixture): |
1163 | 1164 | PlanBuilder(context_diff, DuckDBEngineAdapter.SCHEMA_DIFFER).build() |
1164 | 1165 |
|
1165 | 1166 |
|
| 1167 | +def test_broken_references_external_model(make_snapshot, mocker: MockerFixture): |
| 1168 | + snapshot_a = make_snapshot(ExternalModel(name="a", kind=dict(name=ModelKindName.EXTERNAL))) |
| 1169 | + snapshot_a.categorize_as(SnapshotChangeCategory.BREAKING) |
| 1170 | + |
| 1171 | + snapshot_b = make_snapshot(SqlModel(name="b", query=parse_one("select 2, ds FROM a"))) |
| 1172 | + snapshot_b.categorize_as(SnapshotChangeCategory.BREAKING) |
| 1173 | + |
| 1174 | + context_diff = ContextDiff( |
| 1175 | + environment="test_environment", |
| 1176 | + is_new_environment=True, |
| 1177 | + is_unfinalized_environment=False, |
| 1178 | + create_from="prod", |
| 1179 | + added=set(), |
| 1180 | + removed_snapshots={snapshot_a.snapshot_id: snapshot_a.table_info}, |
| 1181 | + modified_snapshots={snapshot_b.name: (snapshot_b, snapshot_b)}, |
| 1182 | + snapshots={snapshot_b.snapshot_id: snapshot_b}, |
| 1183 | + new_snapshots={}, |
| 1184 | + previous_plan_id=None, |
| 1185 | + previously_promoted_snapshot_ids=set(), |
| 1186 | + previous_finalized_snapshots=None, |
| 1187 | + ) |
| 1188 | + |
| 1189 | + # Make sure the downstream snapshot doesn't have any parents, |
| 1190 | + # since its only parent has been removed from the project. |
| 1191 | + assert not snapshot_b.parents |
| 1192 | + |
| 1193 | + # Shouldn't raise |
| 1194 | + PlanBuilder(context_diff, DuckDBEngineAdapter.SCHEMA_DIFFER).build() |
| 1195 | + |
| 1196 | + |
1166 | 1197 | def test_effective_from(make_snapshot, mocker: MockerFixture): |
1167 | 1198 | snapshot = make_snapshot( |
1168 | 1199 | SqlModel( |
|
0 commit comments