|
1 | 1 | import json |
| 2 | +import logging |
2 | 3 | import typing as t |
3 | 4 | from pathlib import Path |
| 5 | +from unittest.mock import patch |
4 | 6 |
|
5 | 7 | import agate |
6 | 8 | import pytest |
@@ -214,22 +216,26 @@ def test_seed_columns(): |
214 | 216 |
|
215 | 217 |
|
216 | 218 | @pytest.mark.parametrize("model", ["sushi.waiters", "sushi.waiter_names"]) |
217 | | -def test_hooks(capsys, sushi_test_dbt_context: Context, model: str): |
| 219 | +def test_hooks(sushi_test_dbt_context: Context, model: str): |
218 | 220 | engine_adapter = sushi_test_dbt_context.engine_adapter |
219 | 221 | waiters = sushi_test_dbt_context.models[model] |
220 | | - capsys.readouterr() |
221 | 222 |
|
222 | | - engine_adapter.execute( |
223 | | - waiters.render_pre_statements(engine_adapter=engine_adapter, execution_time="2023-01-01") |
224 | | - ) |
225 | | - assert "pre-hook" in capsys.readouterr().out |
| 223 | + logger = logging.getLogger("sqlmesh.dbt.builtin") |
| 224 | + with patch.object(logger, "debug") as mock_logger: |
| 225 | + engine_adapter.execute( |
| 226 | + waiters.render_pre_statements( |
| 227 | + engine_adapter=engine_adapter, execution_time="2023-01-01" |
| 228 | + ) |
| 229 | + ) |
| 230 | + assert "pre-hook" in mock_logger.call_args[0][0] |
226 | 231 |
|
227 | | - engine_adapter.execute( |
228 | | - waiters.render_post_statements( |
229 | | - engine_adapter=sushi_test_dbt_context.engine_adapter, execution_time="2023-01-01" |
| 232 | + with patch.object(logger, "debug") as mock_logger: |
| 233 | + engine_adapter.execute( |
| 234 | + waiters.render_post_statements( |
| 235 | + engine_adapter=sushi_test_dbt_context.engine_adapter, execution_time="2023-01-01" |
| 236 | + ) |
230 | 237 | ) |
231 | | - ) |
232 | | - assert "post-hook" in capsys.readouterr().out |
| 238 | + assert "post-hook" in mock_logger.call_args[0][0] |
233 | 239 |
|
234 | 240 |
|
235 | 241 | def test_target_jinja(sushi_test_project: Project): |
@@ -311,24 +317,29 @@ def test_run_query(sushi_test_project: Project, runtime_renderer: t.Callable): |
311 | 317 | ) |
312 | 318 |
|
313 | 319 |
|
314 | | -def test_logging(capsys, sushi_test_project: Project, runtime_renderer: t.Callable): |
| 320 | +def test_logging(sushi_test_project: Project, runtime_renderer: t.Callable): |
315 | 321 | context = sushi_test_project.context |
316 | 322 | assert context.target |
317 | 323 | engine_adapter = context.target.to_sqlmesh().create_engine_adapter() |
318 | 324 | renderer = runtime_renderer(context, engine_adapter=engine_adapter) |
319 | 325 |
|
320 | | - assert renderer('{{ log("foo") }}') == "" |
321 | | - assert "foo" in capsys.readouterr().out |
| 326 | + logger = logging.getLogger("sqlmesh.dbt.builtin") |
| 327 | + with patch.object(logger, "debug") as mock_logger: |
| 328 | + assert renderer('{{ log("foo") }}') == "" |
| 329 | + assert "foo" in mock_logger.call_args[0][0] |
322 | 330 |
|
323 | | - assert renderer('{{ print("bar") }}') == "" |
324 | | - assert "bar" in capsys.readouterr().out |
| 331 | + with patch.object(logger, "debug") as mock_logger: |
| 332 | + assert renderer('{{ print("bar") }}') == "" |
| 333 | + assert "bar" in mock_logger.call_args[0][0] |
325 | 334 |
|
326 | 335 |
|
327 | | -def test_exceptions(capsys, sushi_test_project: Project): |
| 336 | +def test_exceptions(sushi_test_project: Project): |
328 | 337 | context = sushi_test_project.context |
329 | 338 |
|
330 | | - assert context.render('{{ exceptions.warn("Warning") }}') == "" |
331 | | - assert "Warning" in capsys.readouterr().out |
| 339 | + logger = logging.getLogger("sqlmesh.dbt.builtin") |
| 340 | + with patch.object(logger, "warning") as mock_logger: |
| 341 | + assert context.render('{{ exceptions.warn("Warning") }}') == "" |
| 342 | + assert "Warning" in mock_logger.call_args[0][0] |
332 | 343 |
|
333 | 344 | with pytest.raises(CompilationError, match="Error"): |
334 | 345 | context.render('{{ exceptions.raise_compiler_error("Error") }}') |
|
0 commit comments