3636 SQL_WITH_KEYWORD ,
3737 TABLE_FN_ACTUAL_TEST_CTE_NAME ,
3838 TABLE_FN_EXPECTED_TEST_CTE_NAME ,
39+ TABLE_FN_TEST_CTE_PREFIX ,
3940 UDF_ACTUAL_TEST_CTE_NAME ,
4041 UDF_EXPECTED_TEST_CTE_NAME ,
4142)
@@ -392,6 +393,7 @@ def _classify_model_sql_test_ctes(
392393 mock_source_names : list [str ] = []
393394 mock_seed_names : list [str ] = []
394395 mock_dbt_ref_names : list [str ] = []
396+ mock_table_function_names : list [str ] = []
395397 expected_ctes : list [CompileSqlTestCte ] = []
396398 expected_model_names : list [str ] = []
397399 assertion_ctes : list [CompileSqlTestCte ] = []
@@ -467,6 +469,17 @@ def _classify_model_sql_test_ctes(
467469 )
468470 authored_ctes .append (cte )
469471 continue
472+ if cte .name .startswith (TABLE_FN_TEST_CTE_PREFIX ):
473+ mock_table_function_names .append (
474+ _require_prefixed_name (
475+ cte_name = cte .name ,
476+ prefix = TABLE_FN_TEST_CTE_PREFIX ,
477+ label = "__table_fn__<function>" ,
478+ file_label = file_label ,
479+ )
480+ )
481+ authored_ctes .append (cte )
482+ continue
470483 if cte .name .startswith (EXPECTED_TEST_CTE_PREFIX ):
471484 expected_model_names .append (
472485 _require_prefixed_name (
@@ -501,11 +514,12 @@ def _classify_model_sql_test_ctes(
501514 * mock_source_names ,
502515 * mock_seed_names ,
503516 * mock_dbt_ref_names ,
517+ * mock_table_function_names ,
504518 )
505519 if not mock_target_names :
506520 raise CompileInputError (
507521 f"SQL test '{ file_label } ' must define at least one __ref__*, __source__*, "
508- "__seed__*, or __dbt_ref__ * mock CTE"
522+ "__seed__*, __dbt_ref__*, or __table_fn__ * mock CTE"
509523 )
510524 check_names : tuple [str , ...] = (* expected_model_names , * assertion_names )
511525 if not check_names :
@@ -520,6 +534,7 @@ def _classify_model_sql_test_ctes(
520534 mock_source_names = tuple (mock_source_names ),
521535 mock_seed_names = tuple (mock_seed_names ),
522536 mock_dbt_ref_names = tuple (mock_dbt_ref_names ),
537+ mock_table_function_names = tuple (mock_table_function_names ),
523538 expected_ctes = tuple (expected_ctes ),
524539 expected_model_names = tuple (expected_model_names ),
525540 assertion_ctes = tuple (assertion_ctes ),
@@ -536,6 +551,7 @@ def _is_model_mode_cte(cte_name: str) -> bool:
536551 SOURCE_TEST_CTE_PREFIX ,
537552 SEED_TEST_CTE_PREFIX ,
538553 DBT_REF_TEST_CTE_PREFIX ,
554+ TABLE_FN_TEST_CTE_PREFIX ,
539555 EXPECTED_TEST_CTE_PREFIX ,
540556 ASSERT_TEST_CTE_PREFIX ,
541557 )
0 commit comments