@@ -2376,7 +2376,37 @@ def test_freeze_time_concurrent(tmp_path: Path) -> None:
23762376 tests_dir = tmp_path / "tests"
23772377 tests_dir .mkdir ()
23782378
2379- for model_name in ["sql_model" , "py_model" ]:
2379+ macros_dir = tmp_path / "macros"
2380+ macros_dir .mkdir ()
2381+
2382+ macro_file = macros_dir / "test_datetime_now.py"
2383+ macro_file .write_text (
2384+ """
2385+ from sqlglot import exp
2386+ import datetime
2387+ from sqlmesh.core.macros import macro
2388+
2389+ @macro()
2390+ def test_datetime_now(evaluator):
2391+ return exp.cast(exp.Literal.string(datetime.datetime.now(tz=datetime.timezone.utc)), exp.DataType.Type.DATE)
2392+
2393+ @macro()
2394+ def test_sqlglot_expr(evaluator):
2395+ return exp.CurrentDate().sql(evaluator.dialect)
2396+ """
2397+ )
2398+
2399+ models_dir = tmp_path / "models"
2400+ models_dir .mkdir ()
2401+ sql_model1 = models_dir / "sql_model1.sql"
2402+ sql_model1 .write_text (
2403+ """
2404+ MODEL(NAME sql_model1);
2405+ SELECT @test_datetime_now() AS col_exec_ds_time, @test_sqlglot_expr() AS col_current_date;
2406+ """
2407+ )
2408+
2409+ for model_name in ["sql_model1" , "sql_model2" , "py_model" ]:
23802410 for i in range (5 ):
23812411 test_2019 = tmp_path / "tests" / f"test_2019_{ model_name } _{ i } .yaml"
23822412 test_2019 .write_text (
@@ -2428,16 +2458,15 @@ def execute(context, start, end, execution_time, **kwargs):
24282458 )
24292459
24302460 python_model = model .get_registry ()["py_model" ].model (module_path = Path ("." ), path = Path ("." ))
2461+ ctx .upsert_model (python_model )
24312462
24322463 ctx .upsert_model (
24332464 _create_model (
2434- meta = "MODEL(NAME sql_model )" ,
2465+ meta = "MODEL(NAME sql_model2 )" ,
24352466 query = "SELECT @execution_ds::timestamp_ntz AS col_exec_ds_time, current_date()::date AS col_current_date" ,
24362467 default_catalog = ctx .default_catalog ,
24372468 )
24382469 )
24392470
2440- ctx .upsert_model (python_model )
2441-
24422471 results = ctx .test ()
2443- assert len (results .successes ) == 20
2472+ assert len (results .successes ) == 30
0 commit comments