diff --git a/sqlmesh/dbt/project.py b/sqlmesh/dbt/project.py index 355b18630e..2b0a2e0c3f 100644 --- a/sqlmesh/dbt/project.py +++ b/sqlmesh/dbt/project.py @@ -113,6 +113,8 @@ def load(cls, context: DbtContext, variables: t.Optional[t.Dict[str, t.Any]] = N package.variables.update(package_scoped_vars) else: package.variables.update(all_project_variables) + if variable_overrides: + package.variables.update(variable_overrides) return Project(context, profile, packages) diff --git a/tests/dbt/test_config.py b/tests/dbt/test_config.py index 30dae478a1..fe226d4926 100644 --- a/tests/dbt/test_config.py +++ b/tests/dbt/test_config.py @@ -367,6 +367,16 @@ def test_variables(assert_exp_eq, sushi_test_project): assert sushi_test_project.packages["customers"].variables == expected_customer_variables +@pytest.mark.slow +def test_variables_override(init_and_plan_context: t.Callable): + context, _ = init_and_plan_context( + "tests/fixtures/dbt/sushi_test", config="test_config_with_var_override" + ) + dbt_project = context._loaders[0]._load_projects()[0] # type: ignore + assert dbt_project.packages["sushi"].variables["some_var"] == "overridden_from_config_py" + assert dbt_project.packages["customers"].variables["some_var"] == "overridden_from_config_py" + + @pytest.mark.slow def test_jinja_in_dbt_variables(sushi_test_dbt_context: Context): assert sushi_test_dbt_context.render("sushi.top_waiters").sql().endswith("LIMIT 10") diff --git a/tests/fixtures/dbt/sushi_test/config.py b/tests/fixtures/dbt/sushi_test/config.py index 83118b02cf..a68b3e2333 100644 --- a/tests/fixtures/dbt/sushi_test/config.py +++ b/tests/fixtures/dbt/sushi_test/config.py @@ -11,6 +11,16 @@ test_config = config + +test_config_with_var_override = sqlmesh_config( + Path(__file__).parent, + model_defaults=ModelDefaultsConfig(dialect="duckdb", start="Jan 1 2022"), + variables={ + "some_var": "overridden_from_config_py", + }, +) + + test_config_with_normalization_strategy = sqlmesh_config( Path(__file__).parent, model_defaults=ModelDefaultsConfig(