Skip to content

Commit 8f22a31

Browse files
authored
Chore: warn instead of raising if unit test references unknown model (#3763)
1 parent d0833c0 commit 8f22a31

3 files changed

Lines changed: 41 additions & 14 deletions

File tree

sqlmesh/core/test/__init__.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,18 @@ def run_tests(
5757
).create_engine_adapter(register_comments_override=False)
5858
testing_adapter_by_gateway[gateway] = testing_engine_adapter
5959

60-
tests.append(
61-
ModelTest.create_test(
62-
body=body,
63-
test_name=metadata.test_name,
64-
models=models,
65-
engine_adapter=testing_engine_adapter,
66-
dialect=dialect,
67-
path=metadata.path,
68-
default_catalog=default_catalog,
69-
preserve_fixtures=preserve_fixtures,
70-
)
60+
test = ModelTest.create_test(
61+
body=body,
62+
test_name=metadata.test_name,
63+
models=models,
64+
engine_adapter=testing_engine_adapter,
65+
dialect=dialect,
66+
path=metadata.path,
67+
default_catalog=default_catalog,
68+
preserve_fixtures=preserve_fixtures,
7169
)
70+
if test:
71+
tests.append(test)
7272

7373
result = t.cast(
7474
ModelTextTestResult,

sqlmesh/core/test/definition.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ def create_test(
310310
path: Path | None,
311311
preserve_fixtures: bool = False,
312312
default_catalog: str | None = None,
313-
) -> ModelTest:
313+
) -> t.Optional[ModelTest]:
314314
"""Create a SqlModelTest or a PythonModelTest.
315315
316316
Args:
@@ -329,7 +329,8 @@ def create_test(
329329
name = normalize_model_name(name, default_catalog=default_catalog, dialect=dialect)
330330
model = models.get(name)
331331
if not model:
332-
_raise_error(f"Model '{name}' was not found", path)
332+
logger.warning(f"Model '{name}' was not found{' at ' + str(path) if path else ''}")
333+
return None
333334

334335
if isinstance(model, SqlModel):
335336
test_type: t.Type[ModelTest] = SqlModelTest
@@ -759,6 +760,8 @@ def generate_test(
759760
path=fixture_path,
760761
default_catalog=model.default_catalog,
761762
)
763+
if not test:
764+
return
762765

763766
test.setUp()
764767

tests/core/test_test.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from __future__ import annotations
22

3+
import logging
34
import datetime
45
import typing as t
56
from pathlib import Path
6-
from unittest.mock import call
7+
from unittest.mock import call, patch
78

89
import pandas as pd
910
import pytest
@@ -1760,6 +1761,29 @@ def test_complicated_recursive_cte() -> None:
17601761
)
17611762

17621763

1764+
def test_unknown_model_warns(mocker: MockerFixture) -> None:
1765+
body = load_yaml(
1766+
"""
1767+
model: unknown
1768+
outputs:
1769+
query:
1770+
- c: 1
1771+
"""
1772+
)
1773+
1774+
logger = logging.getLogger("sqlmesh.core.test.definition")
1775+
with patch.object(logger, "warning") as mock_logger:
1776+
ModelTest.create_test(
1777+
body=body,
1778+
test_name="test_unknown_model",
1779+
models={}, # type: ignore
1780+
engine_adapter=mocker.Mock(),
1781+
dialect=None,
1782+
path=None,
1783+
)
1784+
assert mock_logger.mock_calls == [call("Model '\"unknown\"' was not found")]
1785+
1786+
17631787
def test_test_generation(tmp_path: Path) -> None:
17641788
init_example_project(tmp_path, dialect="duckdb")
17651789

0 commit comments

Comments
 (0)