|
1 | 1 | import pathlib |
2 | | -from datetime import date |
| 2 | +from datetime import date, timedelta |
3 | 3 | from tempfile import TemporaryDirectory |
4 | 4 | from unittest.mock import call |
5 | 5 |
|
|
19 | 19 | from sqlmesh.core.environment import Environment |
20 | 20 | from sqlmesh.core.model import load_sql_based_model |
21 | 21 | from sqlmesh.core.plan import BuiltInPlanEvaluator, Plan |
22 | | -from sqlmesh.utils.date import yesterday_ds |
| 22 | +from sqlmesh.utils.date import now, to_date, yesterday_ds |
23 | 23 | from sqlmesh.utils.errors import ConfigError |
24 | 24 | from tests.utils.test_filesystem import create_temp_file |
25 | 25 |
|
@@ -425,3 +425,22 @@ def test_janitor(sushi_context, mocker: MockerFixture) -> None: |
425 | 425 | ], |
426 | 426 | any_order=True, |
427 | 427 | ) |
| 428 | + |
| 429 | + |
| 430 | +def test_plan_default_end(sushi_context_pre_scheduling: Context): |
| 431 | + prod_plan = sushi_context_pre_scheduling.plan("prod", no_prompts=True) |
| 432 | + # Simulate that the prod is 3 days behind. |
| 433 | + plan_end = to_date(now()) - timedelta(days=3) |
| 434 | + prod_plan._end = plan_end |
| 435 | + sushi_context_pre_scheduling.apply(prod_plan) |
| 436 | + |
| 437 | + dev_plan = sushi_context_pre_scheduling.plan( |
| 438 | + "test_env", no_prompts=True, include_unmodified=True, skip_backfill=True, auto_apply=True |
| 439 | + ) |
| 440 | + assert dev_plan.end == plan_end |
| 441 | + |
| 442 | + forward_only_dev_plan = sushi_context_pre_scheduling.plan( |
| 443 | + "test_env_forward_only", no_prompts=True, include_unmodified=True, forward_only=True |
| 444 | + ) |
| 445 | + assert forward_only_dev_plan.end == plan_end |
| 446 | + assert forward_only_dev_plan._start == plan_end |
0 commit comments