@@ -278,30 +278,33 @@ def test_quote_as_configured():
278278def test_on_run_start_end (copy_to_temp_path ):
279279 project_root = "tests/fixtures/dbt/sushi_test"
280280 sushi_context = Context (paths = copy_to_temp_path (project_root ))
281- assert len (sushi_context ._environment_statements ) == 1
282- environment_statements = sushi_context ._environment_statements [0 ]
281+ assert len (sushi_context ._environment_statements ) == 2
283282
284- assert environment_statements .before_all == [
283+ # Root project on run start / on run end
284+ root_environment_statements = sushi_context ._environment_statements [0 ]
285+ assert root_environment_statements .before_all == [
285286 "JINJA_STATEMENT_BEGIN;\n CREATE TABLE IF NOT EXISTS analytic_stats (physical_table VARCHAR, evaluation_time VARCHAR);\n JINJA_END;"
286287 ]
287- assert environment_statements .after_all == [
288+ assert root_environment_statements .after_all == [
288289 "JINJA_STATEMENT_BEGIN;\n {{ create_tables(schemas) }}\n JINJA_END;"
289290 ]
290- assert "create_tables" in environment_statements .jinja_macros .root_macros
291+
292+ assert "create_tables" in root_environment_statements .jinja_macros .root_macros
293+ assert root_environment_statements .jinja_macros .root_package_name == "sushi"
291294
292295 rendered_before_all = render_statements (
293- environment_statements .before_all ,
296+ root_environment_statements .before_all ,
294297 dialect = sushi_context .default_dialect ,
295- python_env = environment_statements .python_env ,
296- jinja_macros = environment_statements .jinja_macros ,
298+ python_env = root_environment_statements .python_env ,
299+ jinja_macros = root_environment_statements .jinja_macros ,
297300 runtime_stage = RuntimeStage .BEFORE_ALL ,
298301 )
299302
300303 rendered_after_all = render_statements (
301- environment_statements .after_all ,
304+ root_environment_statements .after_all ,
302305 dialect = sushi_context .default_dialect ,
303- python_env = environment_statements .python_env ,
304- jinja_macros = environment_statements .jinja_macros ,
306+ python_env = root_environment_statements .python_env ,
307+ jinja_macros = root_environment_statements .jinja_macros ,
305308 snapshots = sushi_context .snapshots ,
306309 runtime_stage = RuntimeStage .AFTER_ALL ,
307310 environment_naming_info = EnvironmentNamingInfo (name = "dev" ),
@@ -318,3 +321,46 @@ def test_on_run_start_end(copy_to_temp_path):
318321 "CREATE OR REPLACE TABLE schema_table_sushi__dev AS SELECT 'sushi__dev' AS schema" ,
319322 ]
320323 )
324+
325+ # Nested dbt_packages on run start / on run end
326+ packaged_environment_statements = sushi_context ._environment_statements [1 ]
327+
328+ assert packaged_environment_statements .before_all == [
329+ "JINJA_STATEMENT_BEGIN;\n CREATE TABLE IF NOT EXISTS analytic_stats_packaged_project (physical_table VARCHAR, evaluation_time VARCHAR);\n JINJA_END;"
330+ ]
331+ assert packaged_environment_statements .after_all == [
332+ "JINJA_STATEMENT_BEGIN;\n {{ packaged_tables(schemas) }}\n JINJA_END;"
333+ ]
334+
335+ assert "packaged_tables" in packaged_environment_statements .jinja_macros .root_macros
336+ assert packaged_environment_statements .jinja_macros .root_package_name == "sushi"
337+
338+ rendered_before_all = render_statements (
339+ packaged_environment_statements .before_all ,
340+ dialect = sushi_context .default_dialect ,
341+ python_env = packaged_environment_statements .python_env ,
342+ jinja_macros = packaged_environment_statements .jinja_macros ,
343+ runtime_stage = RuntimeStage .BEFORE_ALL ,
344+ )
345+
346+ rendered_after_all = render_statements (
347+ packaged_environment_statements .after_all ,
348+ dialect = sushi_context .default_dialect ,
349+ python_env = packaged_environment_statements .python_env ,
350+ jinja_macros = packaged_environment_statements .jinja_macros ,
351+ snapshots = sushi_context .snapshots ,
352+ runtime_stage = RuntimeStage .AFTER_ALL ,
353+ environment_naming_info = EnvironmentNamingInfo (name = "dev" ),
354+ )
355+
356+ assert rendered_before_all == [
357+ "CREATE TABLE IF NOT EXISTS analytic_stats_packaged_project (physical_table TEXT, evaluation_time TEXT)"
358+ ]
359+
360+ # The table names is an indication of the rendering of the dbt_packages statements
361+ assert sorted (rendered_after_all ) == sorted (
362+ [
363+ "CREATE OR REPLACE TABLE schema_table_snapshots__dev_nested_package AS SELECT 'snapshots__dev' AS schema" ,
364+ "CREATE OR REPLACE TABLE schema_table_sushi__dev_nested_package AS SELECT 'sushi__dev' AS schema" ,
365+ ]
366+ )
0 commit comments