@@ -2651,6 +2651,43 @@ def test_cleanup_expired_views(
26512651 ]
26522652
26532653
2654+ @pytest .mark .parametrize (
2655+ "suffix_target" , [EnvironmentSuffixTarget .SCHEMA , EnvironmentSuffixTarget .TABLE ]
2656+ )
2657+ def test_cleanup_expired_environment_schema_warn_on_delete_failure (
2658+ mocker : MockerFixture , make_snapshot : t .Callable , suffix_target : EnvironmentSuffixTarget
2659+ ):
2660+ adapter = mocker .MagicMock ()
2661+ adapter .dialect = None
2662+ adapter .drop_schema .side_effect = Exception ("Failed to drop the schema" )
2663+ adapter .drop_view .side_effect = Exception ("Failed to drop the view" )
2664+
2665+ snapshot = make_snapshot (
2666+ SqlModel (name = "test_catalog.test_schema.test_model" , query = parse_one ("select 1, ds" ))
2667+ )
2668+ snapshot .categorize_as (SnapshotChangeCategory .BREAKING )
2669+ schema_environment = Environment (
2670+ name = "test_environment" ,
2671+ suffix_target = suffix_target ,
2672+ snapshots = [snapshot .table_info ],
2673+ start_at = "2022-01-01" ,
2674+ end_at = "2022-01-01" ,
2675+ plan_id = "test_plan_id" ,
2676+ previous_plan_id = "test_plan_id" ,
2677+ catalog_name_override = "catalog_override" ,
2678+ )
2679+
2680+ with pytest .raises (SQLMeshError , match = "Failed to drop the expired environment .*" ):
2681+ cleanup_expired_views (adapter , [schema_environment ], warn_on_delete_failure = False )
2682+
2683+ cleanup_expired_views (adapter , [schema_environment ], warn_on_delete_failure = True )
2684+
2685+ if suffix_target == EnvironmentSuffixTarget .SCHEMA :
2686+ assert adapter .drop_schema .called
2687+ else :
2688+ assert adapter .drop_view .called
2689+
2690+
26542691def test_max_interval_end_per_model (
26552692 state_sync : EngineAdapterStateSync , make_snapshot : t .Callable
26562693) -> None :
0 commit comments